Ver Mensaje Individual
  #5  
Antiguo 10-02-2015
Avatar de duilioisola
[duilioisola] duilioisola is offline
Miembro Premium
 
Registrado: ago 2007
Ubicación: Barcelona, España
Posts: 1.806
Reputación: 22
duilioisola Es un diamante en brutoduilioisola Es un diamante en brutoduilioisola Es un diamante en bruto
Se me ocurre utilizar punteros, pero eso complica un poco las cosas...
Hablo de memoria, pero sería algo así:
Código Delphi [-]
type
// Tipos de datos
TElemento = record
   id: integer
   tipo: string;
   dato: pointer;
end;

TAnimal = record
  nombre: string;
  peso: integer;
  edad: integer;
end

TPlanta = record
  especie: strnig
  aguanecesaria: integer;
end

// Punteros a tipos de datos
var
  PElemento: ^TElemento;
  PAnimal: ^TAnimal;
  PPlanta: ^TPlanta;
 
begin
  // Creo un elemento
  UnElemento := New(PElemento);
  UnElemento.id := 1;
  UnElemento.tipo := 'ANIMAL';
  // Creo un dato de tipo animal
  UnElemento.dato := New(PAnimal);
  PAnimal(UnElemento.dato)^.nombre := 'CHUCHO';
  ...
  // Creo otro elemento
  UnElemento := New(PElemento);
  UnElemento.id := 2;
  UnElemento.tipo := 'PLANTA';
  // Creo un dato de tipo planta
  UnElemento.dato := New(PPlanta);
  PPlanta(UnElemento.dato)^.especie := 'GRIASOL';
  ...
  // Libero memoria
  Dispose(UnElemento.dato);
  Dispose(UnElemento);
end;
Responder Con Cita