Autor Beitrag
kw16
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Fr 18.03.05 23:00 
Hi,

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

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Fr 18.03.05 23:23 
Deine Lösung funktioniert doch bereits :?:
kw16 Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: 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.