• Martes 23 de Abril de 2024, 08:32

Autor Tema:  Tipo indefinido ("comodín")  (Leído 1429 veces)

SergioyoPlayer

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Tipo indefinido ("comodín")
« en: Viernes 27 de Febrero de 2009, 22:02 »
0
Hola; quería saber cómo declarar un tipo "comodín" en la cabecera de un subprograma; por ejemplo:

Código: Pascal
  1.  
  2. {
  3. Subprograma que inicialice a 0 toda la memoria ocupada por la variable, que puede ser de cualquier tipo
  4. No me compila el TAnyType, porque no sé cómo se pondría)
  5. }
  6. PROCEDURE Inicializar (VAR X:TAnyType{en la doc del FreePascal aparece, pero el compilador no lo identifica T.T});
  7. //El VAR es para que tome como dirección la original de la variable, y no una copia en el stack
  8. VAR i:QWORD;
  9.        pivote:^BYTE;
  10. BEGIN
  11.  pivote:=@X;
  12.  FOR i:=1 TO SizeOf X DO
  13.   BEGIN
  14.    pivote^:=pivote^XOR pivote^;//forma más eficiente que :=0
  15.    INC(pivote);
  16.   END;
  17. END;
  18.  
  19.  

Este es un ejemplo de para qué lo quiero utilizar, pero atmbién lo necesito para más casos. ¿Alguien tiene alguna idea?
Por ahora mi "Inicializar" recibe una dirección y su tamaño, pero me gustaría saber cómo hacer lo de arriba

Gracias de antemano ;)

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re: Tipo indefinido ("comodín")
« Respuesta #1 en: Sábado 28 de Febrero de 2009, 02:31 »
0
Que yo sepa no se puede, Pascal es un lenguaje "Fuertemente Tipado" que quiere decir que debes colocar el tipo de la variable, no existe algo como un tipo "Comodin" que mencionas en pascal. De seguro el libro lo que quiere decir con "AnyTipe" es que puedes definir tu variable de cualquier tipo, mas no que acepta cualquier tipo, que son dos cosas diferentes, no se si me explique.

Saludos :hola:

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

SergioyoPlayer

  • Miembro activo
  • **
  • Mensajes: 31
    • Ver Perfil
Re: Tipo indefinido ("comodín")
« Respuesta #2 en: Sábado 28 de Febrero de 2009, 02:39 »
0
Gracias por tan pronta respuesta ^^
Ya sé que Pascal es fuertemente tipado. Quero ir a un nivel un poco más bajo, y estoy convencido de que FreePascal me trae las herramientas, solo que aún no sé cómo emplearlas:

Encontré en la unidad TypInfo en el rtl.pdf que viene con FreePascal (carpeta DOC) utilidades como la estructura de la definición de tipos (su tamaño, dirección, etc). Me da igual si he de utilizar ensamblador.
También leí algo sobre punteros a tipos (que no punteros a una variable con tipo; sino punteros a tipos), pero no sé cómo indicarlo.
Sé que lo que pido es muy técnico, pero me gustaría llegar al fondo del asunto y saber "guisarme" las cosas a mi gusto.
En algún momento alguien habrá hecho eso, ¿no?
Pascal tiene el SizeOf, el INC, etc., que reciben la variable con su tipo, que son 2 cosas distintas. A mí me interesaría obtener ambas (saber identificarlas).
Algo similar a los objetos, cuando pones "If clase1 IS TClase1 THEN ..." pero genérico y para tipos.
Gracias de todas formas por el interés ;)

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Tipo indefinido ("comodín")
« Respuesta #3 en: Lunes 2 de Marzo de 2009, 11:05 »
0
Cita de: "SergioyoPlayer"
También leí algo sobre punteros a tipos (que no punteros a una variable con tipo; sino punteros a tipos), pero no sé cómo indicarlo.Sé que lo que pido es muy técnico, pero me gustaría llegar al fondo del asunto y saber "guisarme" las cosas a mi gusto.En algún momento alguien habrá hecho eso, ¿no?
Para esto utiliza algo que no sea Pascal.

Salud