Heino - Do 05.06.03 07:26
Titel: Dynamisches Array funktioniert nicht
Moin. Moin
Folgendes Problem
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| procedure Random_Number_Generator(var Random_Numbers_Array : array of Integer); const max_Value = 49; var Dummy_Array : array [1..max_value]of Integer; SwapValue : Integer; Location : Integer; Dummy_Index : Integer; i : Integer; begin for i := 1 to max_Value do Dummy_Array[i] := i; Location := max_Value; while (Location > 0) do begin |
Frage: Wie kann ich max_value, also das Array dynamisch machen? Ich habe versucht unter Private eine Variable
Zahl: integer zu deklarieren, in einer Procedure der Variablen einen Wert zugewiesen und dann max_Value gegen die Variable ausgetauscht.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| procedure Random_Number_Generator(var Random_Numbers_Array : array of Integer); var Dummy_Array : array [1..Zahl]of Integer; SwapValue : Integer; Location : Integer; Dummy_Index : Integer; i : Integer; begin for i := 1 to Zahl do Dummy_Array[i] := i; u.s.w. |
Fehlermeldung:
| Zitat: |
| [Fehler] Unit1.pas(82): Undefinierter Bezeichner: 'Zahl' |
Im Forum habe ich schon gelesen das es mit SetLenght (Dummy_Array,20) funktioniert, aber genau die 20 möchte ich als Variable ja ändern, also SetLenght (Dummy_Array,(Variable). Ich weiss leider nicht wie und an welcher Stelle ich es im Code integrieren soll.
Im voraus vielen Dank
Heino
Moderiert von
Tino: Beitrag formatiert.
Simon Joker - Do 05.06.03 11:24
Hi Heino
Die Fehlermeldung kommt, weil dei Procedur nicht zu deiner Form gehört, du aber auf eine Variable der Form zugreifst.
Lösung:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| TForm1 = class(TForm) private ... public procedure Random_Number_Generator(var Random_Numbers_Array : array of Integer); .... end;
...
procedure TForm1.Random_Number_Generator(var Random_Numbers_Array : array of Integer); |
Oder:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| procedure Random_Number_Generator(var Random_Numbers_Array : array of Integer); var Dummy_Array : array of Integer; SwapValue : Integer; Location : Integer; Dummy_Index : Integer; i : Integer; begin SetLength(Dummy_Array, Form1.Zahl); for i := 1 to High(Dummy_Array) do Dummy_Array[i] := i; |
Wenn der DummyArray genausolang sein soll wie der Random_Numbers_Array dann:
Delphi-Quelltext
1:
| SetLength(Dummy_Array, Length(Random_Numbers_Array)); |