Was haltet ihr von einem array of pointer? Also ungefähr so:
Delphi-Quellcode:
type
TRec1=record //alter Record
//
end;
PRec1=^TRec1;
TRec2=record //neuer Record;
//
end;
PRec2=^TRec2;
var alteversion: boolean; Daten:array[0..9] of pointer;//Größe des Arrays natürlich beliebig
groesse:integer; //abhängig von alteVersion auf sizeof(TRec1) oder sizeof(TRec2) gesetzt
//Jetzt erstmal alteVersion und Groesse richtig setzen. Dann für jedes Element von Daten mit getmem genau so viel Speicher allozieren, wie für den benutzten Record gebraucht wird. Beim auslesen dann in den entsprechenden Zeigertyp casten
for i:=0 to 9 do
getmem(array[i],groesse)
//Jetzt einlesen
meinStream.read(array[i]^,groesse);
//Verwendung:
if alteVersion then
begin
PRec1(Daten[0])^ //Und irgendwas damit machen
end
else
begin
PRec2(Daten[0])^ //Und irgendwas damit machen
end;
//Am Ende natürlich freemem nicht vergessen
Ist natürlich relativ viel Code, da du oft alteVersion abfragen musst, aber du kannst dir ja Funktionen bauen, die das automatisieren.