Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Array mit TPosition


Bennle - Di 27.12.05 02:02
Titel: Array mit TPosition
Hallo,
Ich habe folgendes definiert:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
type TPosition = record
  Menge: Integer;
  Artikelnr: String;
  Artikel: String;
  Beschreibung: String;
  Preis: Real;
  Summe: Real;
  end;

var
   positionen: array of TPosition;

...
 positionen[0].Menge := 2;
  positionen[0].Artikelnr := '2222';
  positionen[0].Artikel := 'Nix';
  positionen[0].Beschreibung := 'xxx';
  positionen[0].Preis := 2.99;
  positionen[0].Summe := positionen[0].Menge * positionen[0].Preis;
...


Beim starten (also während der Laufzeit) tritt ein Fehler auf! (Bild)

Habe ich etwas falsch definiert?

MfG
Bennle


BenBE - Di 27.12.05 02:24

Du musst vor der Nutzung des Arrays dessen Größe mit SetLength festlegen.


Bennle - Di 27.12.05 02:26

user profile iconBenBE hat folgendes geschrieben:
Du musst vor der Nutzung des Arrays dessen Größe mit SetLength festlegen.


Aha, danke! Aber wie mach ich das ? :D


delfiphan - Di 27.12.05 02:30

z.B. so:

Delphi-Quelltext
1:
SetLength(positionen, 5);                    


(Dabei ist 5 die gewünschte Länge deines Arrays..)


BenBE - Di 27.12.05 02:33

RTFM oder RTFDOH ...


Delphi-Quelltext
1:
SetLength(ArrayVar, Len);                    


Bennle - Di 27.12.05 02:34

Hallo,
Danke! Nun gehts!


MfG
Bennle


Ecki - Sa 16.09.06 12:42
Titel: Dynamische Arrays auch freigeben!
Hallo, der Tip ist ok, nur solltest Du am Ende deines Programmes dynamische Array´s auch wieder freigeben mit Setlength(positionen,0) , denn sonst bleibt der Speicher belegt.

Zwischendurch kannst du mit length(positionen) die reservierte Anzahl rausbekommen, mit high(positionen) das oberste element. Das ist praktisch für Schleifen for i := low(positionen) to high(positionen)


delfiphan - Sa 16.09.06 18:01

Ecki du bist nicht nur 3/4 Jahre zu spät sondern deine Antwort auch noch falsch ;)
Dyn. Arrays sind referenzgezählt und werden automatisch freigegeben. Genau wie die Strings auch.