Autor Beitrag
alexschultze
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: Sa 26.10.02 20:27 
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: Sa 26.10.02 20:30 
nimm einfach ein Dynamische Array.

Hier mal ein Beispiel:

ausblenden 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.

_________________
Viele Grüße
Jakob
alexschultze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1333
Erhaltene Danke: 1

Arch Linux
Eclipse
BeitragVerfasst: 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
ausblenden Quelltext
1:
2:
3:
4:
SetLength(MyArray, Anzahl+1);
...
...
Inc(Anzahl);

die Anzahl deiner Records immer wieder erhöhen.

ein Beispiel:

ausblenden 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:

_________________
Viele Grüße
Jakob
alexschultze Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 317



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 563



BeitragVerfasst: 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:
ausblenden 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:
ausblenden Quelltext
1:
SetLength(MyArray, Length(MyArray) + 1);					


Edit: miese kleine Rechtschreibfehler gefunden

_________________
.oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...