Autor Beitrag
uli
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mi 04.12.02 17:07 
Ich möchte Integerwerte in einem Array ablegen.
Allerdings steht die Anzahl vorher nicht fest.
Wie kann ich ein dynamisches Array deklarieren oder kann ich
die Anzahl z.B. mit ARRAY[0..1] deklarieren und während der Laufzeit
z.B. auf ARRAY[0..10] ändern?
Ich habe schon im Forum gesucht, aber nichts gefunden, was funktioniert. :nixweiss:

Gruß Uli.
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Mi 04.12.02 17:12 
Hallo,

du deklarierst ein Dynamisches Array einfach so:
ausblenden Quelltext
1:
2:
VAR
  IntArray : ARRAY OF INTEGER;


Mit SetLength änderst du die Grözße zur Laufzeit.
In der Online Hilfe solltest du einiges zu dem Thema finden.

Gruß
Klabautermann
uli Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mi 04.12.02 19:33 
Danke für die schnelle Antwort.
Genau das habe ich schon versucht.
Das steht so in der Hilfe und im DF habe ich das auch gefunden.
Leider funktioniert es nicht.
Beim Copilieren bekomme ich folgende Fehler angezeigt:
1. Fehlermeldung bei der Deklaration: '[' erwartet, aber 'OF' gefunden.
2. Fehlermeldung bei SetLength: Inkompatible Typen: 'String' und 'Array'.

Gruß Uli.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 04.12.02 21:19 
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.Button1Click(Sender: TObject);
var
  IntArray : array of integer;
  i        : integer;
begin
  SetLength(IntArray,1);
  IntArray[0] := 12;

  SetLength(IntArray,2);
  IntArray[1] := 24;

  for i := 0 to length(IntArray) - 1 do
    ShowMessage(inttostr(IntArray[i]));
end;

Geht doch?!
uli Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Mi 04.12.02 23:38 
Ich habe die Procedur jetzt 1 zu 1 übernommen, bekomme aber die gleiche Fehlermeldung beim Compilieren.

Liegt's vielleicht am Delphi3? :?!?:
Tino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Veteran
Beiträge: 9839
Erhaltene Danke: 45

Windows 8.1
Delphi XE4
BeitragVerfasst: Do 05.12.02 00:25 
uli hat folgendes geschrieben:
Liegt's vielleicht am Delphi3? :?!?:

Ja! Das ist erst ab Delphi 4 möglich. Jedenfalls die Methode die oben beschrieben wurde.

Gruß
TINO
Klabautermann
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Veteran
Beiträge: 6366
Erhaltene Danke: 60

Windows 7, Ubuntu
Delphi 7 Prof.
BeitragVerfasst: Do 05.12.02 07:32 
Hallo,
alternativ kannst du verkettete Listen nutzen.
Eine Beipielimpementation findest du hier (weiter unten von einem gewissen Klabautermann ;)).

Gruß
Klabautermann
uli Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 05.12.02 09:26 
Danke für den Tip, eine andere Alternative habe ich sicherlich erstmal nicht. Allerdings muss ich mir mit meinen noch nicht so ausgeprägten Delphikenntnissen die Sache mal so richtig auseinandernehmen um sie zu verstehen. :mrgreen:
Vielleicht bekomme ich von meinem Chef auch mal das Geld für Delphi7 bewilligt und dann habe ich auch die dynamischen Arrays. :wink:

Gruß Uli.
uli Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 41



BeitragVerfasst: Do 05.12.02 09:54 
:think: Ich habe mir das in der Hilfe von Delphi3 nochmal genauer angesehen. Es ist in der Tat so, dass es keine dyn. Arrays gibt.
Dort gibt es sogenannte offene Array, mit denen ich Arrays verschiedener Größe an Proceduren oder Funktionen übergeben kann.
In etwa so:

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
Procedure Machwas(A: Array of Integer)
begin
.
.
.
end;


Gruß Uli.