Ich möchte eine Reihe von Datensätzen (RWell) erstellen und in einem Array in einer bestimmten Reihenfolge speichern. Dann möchte ich ein neues Array (anderes Layout) erstellen und die Datensätze darin neu anordnen. Natürlich möchte ich keine Daten im RAM duplizieren, daher dachte ich, dass ich im zweiten Array Zeiger auf die Datensätze im ersten Array setzen sollte. Allerdings kann ich das nicht tun. Kann mir jemand sagen, was mit dem unten stehenden Code falsch ist? Dank
Type
RWell= record
x: string;
i: integer;
end;
PWell= ^RWell;
RWellArray= Array[0..12, 0..8] of RWell;
procedure TClass1.CreateWells
var
WellMX: RWellArray;
begin
{ Sollte ich WellXM hier initialisieren? }
{ Beachten: WellXM ist ein statisches Array! }
andere Sachen
end;
var Wells: array of PWell;
procedure TClass2.AddWell(aWell: RWell);
begin
aWell.Stuff:= stuff; {aWell kann nicht nur lesend sein, weil ich es hier ändern muss}
SetLength(Wells, Length(Wells)+ 1); { Speicher reservieren }
Wells[High(Wells)]:= @aWell;
end;
procedure TClass3.DisplayWell;
var CurWell: RWell;
begin
CurWell:= CurPrimer.Wells[iCurWell]^; <--- Problem (aber im Debugger ist die Adresse korrekt)
end;
Gelöst von Rob K.