Ich würde dir bei vielen Größenänderungen eine Schrittweise änderung ämpfehel und die Tatsächliche Größe extra speichern.
Unter Umständen kann man sons nette Fragmentierungsprobleme bekommen, vorallem bei DelphiMM.
Delphi-Quellcode:
Type TArray = Record
Size: Integer;
Data: Array of Byte;
End;
Var MyArray: TArray;
//Und dann eventuell ein eigenes SetLength (hier wird z.B. auf 64 KB aufgerundet)
Procedure MySetLength(Var A: TMyArray; NewSize: Integer);
Begin
A.Size := NewSize;
SetLength(A.Data, (NewSize + $FFFF) and $00010000);
End;
Length(EinArray) wird dann durch
MyArray.Size
und
EinArray[123] durch
MyArray.Data[123] ersetzt.
Man kann die Variablen zwar auch einzeln Verwalten, aber zusammen ist es wohl schöner ^^
Obwohl man so nur die SetLength und Length umbauen müßte. (am Array selber ändert sich da ja nichts)
Delphi-Quellcode:
Var ASize: Integer;
AData: Array of Byte;