Wie kann man Informationen eines Arrays ermitteln?
Was ich gerne hätte wäre eine Möglichkeit unter (altem und neuem) Delphi und unter FreePascal, also mit primitiven Bordmitteln die in allen Pascal's vorhanden sein sollten, Dinge über ein Array zu erfahren.
Im Endeffekt interessiert mich nur die tatsächliche Größe des Array im Speicher, aber vielleicht gibt es ja auch noch Möglichkeiten die mir mehr Informationen darüber ausspucken, wie zum Beispiel wieviel Dimensionen es hat, wieviel Elemente pro Dimension vorhanden sind etc...
Hat da jemand Erfahrung mit und kann mir dabei bitte weiter helfen?
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
type
ArrayOfArrayOfDouble = array of array of double;
var
Input: ArrayOfArrayOfDouble;
i: Integer;
size: Integer;
begin
Randomize;
SetLength(Input, 4);
SetLength(Input[0], 2);
SetLength(Input[1], 4);
SetLength(Input[2], 6);
SetLength(Input[3], 8);
for i := Low(Input[0]) to High(Input[0]) do
Input[0][i] := (Random(999) + 333) / (Random(9) + 3);
for i := Low(Input[1]) to High(Input[1]) do
Input[1][i] := (Random(999) + 333) / (Random(9) + 3);
for i := Low(Input[2]) to High(Input[2]) do
Input[2][i] := (Random(999) + 333) / (Random(9) + 3);
for i := Low(Input[3]) to High(Input[3]) do
Input[3][i] := (Random(999) + 333) / (Random(9) + 3);
// macht man das so?
size := 0;
size := size + ((Length(Input[0]) * SizeOf(Input) + SizeOf(double)));
size := size + ((Length(Input[1]) * SizeOf(Input) + SizeOf(double)));
size := size + ((Length(Input[2]) * SizeOf(Input) + SizeOf(double)));
size := size + ((Length(Input[3]) * SizeOf(Input) + SizeOf(double)));
end;
Ein Length() gibt mir ja nur die Elemente der ersten Ebene wieder.
Ein SizeOf() gibt mir nur die Größe des Pointers der Variable wieder.