Entwickler-Ecke
Windows API - Variablen (records) zur Laufzeit erstellen
alexschultze - Sa 26.10.02 20:27
Titel: Variablen (records) zur Laufzeit erstellen
hi
ich will eine Variable (einen Record) 'variabel' erstellen, also in einer Prozedur deklarieren, und nicht im 'var' Bereich.
Der Name sollt auch variabel machbar sein.
(kann man das mit array's machen? Kann man den Inhalten in Array's z.b. Namen geben und diese über diese Namen abrufen?
Habe das Array Kapitel im Delphi-Buch überpsrungen *schäm*
alex
DeCodeGuru - Sa 26.10.02 20:30
nimm einfach ein Dynamische Array.
Hier mal ein Beispiel:
Quelltext
1: 2: 3: 4: 5: 6:
| var MyArray: array of MyRecord; begin SetLength(MyArray, 3); // neue Länge des Arrays zuweisen MyArray[1].Wasweisich := 'Hahaha'; end; |
Ich hoffe, dass dir das hilft.
alexschultze - Sa 26.10.02 20:40
wieso eine Größe festlegen?
(des arrays)
ich weiß nicht wieviele records da reinkommen werden.
Soll ich dort für unendlich viele einfach 9999 reintippen?
Irgendwie ist das ganze außerdem irgendwie unübersichtlich:
MyArray[1].Wasweisich := 'Hahaha';
myArray ist der Array. Klaro. Warum aber zwei Definitionen? (Wasweisich und [1] ???
z.b. in meinem record ist simpel eine Integer und ein String.
Wie kann ich diese dort reinbringen?
DeCodeGuru - Sa 26.10.02 21:02
du kannst ja auch ne Integer-Variable nehmen, in der du dann die aktuelle Größe des Arrays speicherst.
Dann kannste mit
Quelltext
1: 2: 3: 4:
| SetLength(MyArray, Anzahl+1); ... ... Inc(Anzahl); |
die Anzahl deiner Records immer wieder erhöhen.
ein Beispiel:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25:
| type MyRecord = record FInt: Integer; end;
var Anzahl: Integer; MyArray: Array of MyRecord;
procedure AddRecord(NewInt: Integer); begin SetLength(MyArray, Anzahl +1); with MyArray[Anzahl +1] do begin FInt := NewInt; end; Inc(Anzahl); end;
procedure TForm1.Button1Click(Sender: TObject); begin AddRecord(123);
ShowMessage(IntToStr(Anzahl)); end; |
Vielleicht hilft dir das :wink:
alexschultze - Sa 26.10.02 21:08
gut gut.
der record würde einen dynamischen Namen haben. Könnte ich nicht mithilfe der Nummer des Records im Array, sondern mithilfe des Namen des records darauf zugreifen?
Ich komme übrigens nochmal auf die Variablen zurück. Kann ich eine Integer während der Laufzeit einfach so erstellen?
O'rallY - Do 31.10.02 16:23
Anmerkung:
DeCodeGuru hat folgendes geschrieben: |
du kannst ja auch ne Integer-Variable nehmen, in der du dann die aktuelle Größe des Arrays speicherst.
Dann kannste mit
Code:
Quelltext 1: 2: 3: 4: 5: 6: 7:
| SetLength(MyArray, Anzahl+1); ... ... Inc(Anzahl);
die Anzahl deiner Records immer wieder erhöhen. |
|
'tschuldige, aber das ist eigentlich unnötig, da man mit
Length(AnArray); die Länge des übergebenen Arrays herausfinden kann, also wäre das Gleiche so möglich:
Quelltext
1:
| SetLength(MyArray, Length(MyArray) + 1); |
Edit: miese kleine Rechtschreibfehler gefunden
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!