Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - dynamischer Record


kw16 - Fr 18.03.05 23:00
Titel: dynamischer Record
Hi,

ich will einen Record definieren, dessen Grösse jedoch erst zur Laufzeit festgelegt wird. Die Struktur sollte so aussehen:


Quelltext
1:
2:
3:
4:
5:
6:
type
  TEingabevektor = record
    Eingabewerte: array of longint;
    Ausgabewert: extended;
  end;
TEingabevektoren = array of TEingabevektor;


Man könnte natürlich auch einen Array mit Anzahl Eingabewerte + 1 erzeugen, das ist jedoch weniger gut lesbar, deshalb der Record.

Gibt es eine Lösung ohne Zeigern um den benötigten Speicher zu alloziiren ?


delfiphan - Fr 18.03.05 23:23

Deine Lösung funktioniert doch bereits :?:


kw16 - Fr 18.03.05 23:45

hmm,

also:

setlength(Eingabevektor.Eingabewerte,Anzahl_Eingabewerte_je_Eingabevektor+1); ?

und für den Ausgabwert muss man nicht explizit Speicher zuordnen ?


delfiphan - Fr 18.03.05 23:50

Mit SetLength wird der Speicher bereits alloziert.

PS: Dynamische Arrays sind Reference-counted, du musst den Speicher am Schluss nicht mal selbst freigeben. Wenn du das Array explizit löschen willst, weisst du einfach nil zu. Sieht fahrlässig aus, ist es aber nicht.