[ Foro de Pascal ]
Hola, necesito saber como se hace para pasar un tipo (TYPE) como parámetro.
A modo de ejemplo, dejo el pseudocódigo.
Primero defino un par de registros nodoA y nodoB con sus tipos y los respectivos ptr para crearlos dinámicamente.
type
ptrNodoA = ^nodoA;
nodoA = record
datoInt: integer;
datochar: char;
end;
ptrNodoB = ^nodoB;
nodoB = record
datoInt: integer;
datochar: char;
end;
SIN USAR OBJETOS - SIN USAR OBJETOS - SIN USAR OBJETOS:
------------------------------------------------------------------------------------------
Lo que pretendo es hacer un creador genérico de instancias usando new() de Pascal, donde necesito conocer el tipo del registro para hacer el cast y acceder a los campos.
Sería más o menos así:
procedure crearNodo(var p:pointer, tipoNodo:TYPE?????); << cómo pasar tipo o referencia de tipo ???
begin
new(tipoNodo(p));
tipoNodo(p).datoint := 0;
tipoNodo(p).datochar := 'x';
end;
¿Cómo se hace para pasarle a tipoNodo un valor que es un tipo, o la referencia de un tipo?
Gracias por tu molestia.
Sin usar objetos, una solución simple pero fea es que ese parámetro que has llamado TYPE sea simplemente un string y dentro de la función compruebes su valor con un "if".
(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)