Einzelnen Beitrag anzeigen

Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#1

Wie kann man Informationen eines Arrays ermitteln?

  Alt 10. Sep 2022, 09:28
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat