Autor Beitrag
Heino
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: Do 05.06.03 07:26 
Moin. Moin

Folgendes Problem
ausblenden 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 > 0do
 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.
ausblenden 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);
//const max_Value = 49;
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 user profile iconTino: Beitrag formatiert.
Phantom1
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 390



BeitragVerfasst: Do 05.06.03 08:29 
ausblenden 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);
const max_Value = 49;
var
  Dummy_Array : array of Integer;
  SwapValue   : Integer;
  Location    : Integer;
  Dummy_Index : Integer;
  i           : Integer;
begin
  SetLength(Dummy_Array, max_Value);
  for i := 1 to High(Dummy_Array) do
    Dummy_Array[i] := i;
Simon Joker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 236
Erhaltene Danke: 1



BeitragVerfasst: 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:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
TForm1 = class(TForm)
  private
    { Private-Deklarationen }
    ...
  public
    { Public-Deklarationen }
     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:

ausblenden 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:
ausblenden Delphi-Quelltext
1:
SetLength(Dummy_Array, Length(Random_Numbers_Array));