[ Foro de Pascal ]

pasar tipo como parámetro

31-Jul-2015 02:49
Invitado (ptrAux)
1 Respuestas

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.


31-Jul-2015 12:11
Nacho Cabanes (+30)

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.)