Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Array von eigenem Record, der auch Arrays enthält (https://www.delphipraxis.net/93404-array-von-eigenem-record-der-auch-arrays-enthaelt.html)

DeddyH 5. Jun 2007 14:30

Re: Array von eigenem Record, der auch Arrays enthält
 
Und noch ein Zitat aus der OH:
Zitat:

Wenn X und Y Variablen desselben dynamischen Array-Typs sind, zeigt bei der Anweisung X :=Y X auf dasselbe Array wie Y. (Für diese Anweisung ist es nicht erforderlich, vorher Speicher für X zuzuweisen.) Im Gegensatz zu Strings und statischen Arrays werden dynamische Arrays nämlich nicht automatisch kopiert, bevor einem ihrer Elemente ein Wert zugewiesen wird. Beispielsweise hat A[0] nach der Ausführung des folgenden Quelltextes den Wert 2:

var

A, B: array of Integer;
begin
SetLength(A, 1);
A[0] := 1;
B := A;
B[0] := 2;
end;

Wenn A und B statische Arrays wären, hätte A[0] immer noch den Wert 1.

divBy0 5. Jun 2007 14:39

Re: Array von eigenem Record, der auch Arrays enthält
 
Danke euch allen... :gruebel:

Jetzt muss ich mir erst mal ein paar Gedanken machen.

Tyrael Y. 5. Jun 2007 14:49

Re: Array von eigenem Record, der auch Arrays enthält
 
Versuch es mal so...für die Records muss auch noch Speicher geholt werden.

Delphi-Quellcode:
type
  PMyData = ^TMyData
  TMyData = record
    Real : Array of Double;
    Int : Array of Integer;
  end;

type
  TDaten : Array[0..3] of PMyData;

.
.
.

var
  Daten: TDaten;
begin
 
//Speicher für Records holen
New(Daten[0]);
New(Daten[1]);
New(Daten[2]);
try
  //Speicher für Arrays im jedem Record holen
  SetLength(Daten[0].Int, aLänge);
  SetLength(Daten[0].Real, bLänge);
  SetLength(Daten[1].Int, cLänge);
  SetLength(Daten[1].Real, dLänge);
  SetLength(Daten[2].Int, eLänge);
  SetLength(Daten[3].Real, fLänge);
....
....

finally
  //Speicher der Array im Record freigeben
  SetLength(Daten[0].Int, 0);
  SetLength(Daten[0].Real, 0);
  SetLength(Daten[1].Int, 0);
  SetLength(Daten[1].Real, 0);
  SetLength(Daten[2].Int, 0);
  SetLength(Daten[3].Real, 0);
 
  //Records freigeben
  Dispose(Daten[0]);
  Dispose(Daten[1]);
  Dispose(Daten[2]);
end;


end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:02 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz