Darf man wissen, wie du deinen dynamischen Array erstellst?
SetLength(array, wert) ??
Da könnte der Hund vielleicht begraben sein.
Zitat:
procedure SetLength(var S; NewLength: Integer);
Beschreibung
S ist eine String- oder dynamische Array-Variable.
NewLength enthält die neue Anzahl der Zeichen oder Elemente in S.
Bei einem kurzen String ändert SetLength einfach das Längenbyte (das Zeichen an der Position S[0]) auf den angegebenen Wert. In diesem Fall muß mit NewLength ein Wert zwischen 0 und 255 angegeben werden.
Bei einer langen String- oder einer dynamischen Array-Variable weist SetLength dem in S referenzierten String oder Array die angegebene Länge zu. Dabei bleiben die Zeichen im String oder die Elemente im Array erhalten, jedoch ist der Inhalt des neu zugewiesenen Speicherbereichs nicht definiert. Eine Ausnahme stellt das Vergrößern der Länge von dynamischen Arrays dar, in dem die Elemente Typen sind, die initialisiert werden müssen (Strings, Varianten, Variant-Arrays oder Records, die solche Typen enthalten). Wenn S ein dynamisches Typen-Array ist, das initialisiert werden muß, wird der neu zugewiesene Platz auf 0 oder nil gesetzt.
Nach dem Aufruf von SetLength ist sichergestellt, daß S auf einen eindeutigen String oder ein eindeutiges Array zeigt (d.h. dessen Referenzzähler den Wert Eins hat). Ist nicht genug Speicher für die Variable vorhanden, wird eine EOutOfMemory-
Exception ausgelöst.
Ist nur ne Idee.
//Edit: Weil
Delphi-Quellcode:
procedure TTestForm.FormCreate(Sender: TObject);
var
b: array of byte;
i: integer;
begin
SetLength(b, 1); //
i := b[0]; // i ist 0
i := High(b); // hight -> 0 .. High gibt - 1 wenn SetLength(b, 0)
for i := 0 to High(b) do begin
ShowMessage('0');
end;
end;
Stellen Sie sich bitte Zirkusmusik vor.