Hallo,
ich versuche ja ein Gleisplanprogramm zu schreiben und dazu benutze ich ein Dynamisches Array mit 4 Dimensionen.
GleisArray: array of array of array of array of string;
Dann lese ich aus der Datenbank die einzelnen Felder von einer
SQL Abfrage für ein DrawGrid ein:
Delphi-Quellcode:
SetLength(GleisArray, 0,0,0,0);
Count := queryTexte.RecordCount +1;
SetLength(GleisArray, Count, Count, Count, Count);
Und dann wird es mit den Daten gefüllt:
Delphi-Quellcode:
while not queryTexte.Eof
do
begin
GleisArray[i, 0, 0, 0] :=
query.FieldByName('
x').AsString;
GleisArray[0, i, 0, 0] :=
query.FieldByName('
y').AsString;
GleisArray[0, 0, i, 0] :=
query.FieldByName('
Feldtext').AsString;
GleisArray[0, 0, 0, i] :=
query.FieldByName('
Art').AsString;
Inc(i);
query.Next;
end;
Aber nun frißt die Anwendung 2GB Speicher und das kann eigentlich nur am Array liegen. Benutze ich SetLength falsch? MadExcept zeigt jedenfalls beim Disassembler das Array mit GetMem, ReallocMem und FinalizeArray an.