Programación General > Pascal

 Tipo indefinido ("comodín")

(1/1)

SergioyoPlayer:
Hola; quería saber cómo declarar un tipo "comodín" en la cabecera de un subprograma; por ejemplo:


--- Código: Pascal --- {Subprograma que inicialice a 0 toda la memoria ocupada por la variable, que puede ser de cualquier tipoNo me compila el TAnyType, porque no sé cómo se pondría)}PROCEDURE Inicializar (VAR X:TAnyType{en la doc del FreePascal aparece, pero el compilador no lo identifica T.T});//El VAR es para que tome como dirección la original de la variable, y no una copia en el stackVAR i:QWORD;       pivote:^BYTE;BEGIN pivote:=@X; FOR i:=1 TO SizeOf X DO  BEGIN   pivote^:=pivote^XOR pivote^;//forma más eficiente que :=0   INC(pivote);  END;END;  
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:
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:

SergioyoPlayer:
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:

--- 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?
--- Fin de la cita ---
Para esto utiliza algo que no sea Pascal.

Salud

Navegación

[0] Índice de Mensajes

Ir a la versión completa