Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Parameter einer Procedure


THF - Di 22.02.05 18:31
Titel: Parameter einer Procedure
Hallo,

wie kann ich eine ARRAY-Variable als Parameter in einer Procedure übergeben,
und wie rufe die Procedure wieder auf:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Procedure Test( var Testvariable :array of Integer;var Testvariable2 : array of TTest);
........         
begin

end;

ProcedureTform.Button1Click(Sender: TObject);
begin
Test(Testvariable[1],Testvariable2[1]);
end;

Gruß

THF

Moderiert von user profile iconChristian S.: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconChristian S.: Topic aus VCL (Visual Component Library) verschoben am Di 22.02.2005 um 17:35


MrSaint - Di 22.02.05 18:37


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
type
  TArrayOfInteger = array of integer;
  TArrayOfTTest = array of TTest;

procedure Test(var Testvariable: TArrayOfIntegervar Testvariable2 : TArrayOfTTest);
........         
begin

end;




MrSaint

EDIT: hatte beim ersten Parameter vergessen, dass das auch ein Array ist :oops:


THF - Di 22.02.05 19:31

Hallo MrSaint,

kannst Du mir vielleicht noch erklären,
wie ich die Procedure dann wieder aufrufe ?

Delphi-Quelltext
1:
2:
3:
4:
Procedure Tform.Button1Click(Sender: TObject);  
begin  
Test(Testvariable[1],Testvariable2[1]);  
end;

Gruß

THF

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.


MrSaint - Di 22.02.05 19:59

Etwa so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);  
var
  aTestvariable   : TArrayOfInteger;
  aTestvariable2  : TArrayOfTTest;
begin  
  Test(aTestvariable, aTestvariable2); 
end;


THF - Mi 23.02.05 08:03

Hallo,

die eigentliche Array-Variable kann man wohl nicht als Parameter übergeben ?

Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.Button1Click(Sender: TObject);    
begin    
  Test(Testvariable[1],Testvariable2[1]);    
end;

Gruß
THF

Moderiert von user profile iconTino: Code- durch Delphi-Tags ersetzt.


MrSaint - Mi 23.02.05 10:30

Wie sind Testvariable und Testvariable2 denn deklariert? Du musst halt einen TArrayOfInteger und einen TArrayOfTTest übergeben...


MrSaint


THF - Mi 23.02.05 19:25

Hallo,

also so:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure TForm1.Button1Click(Sender: TObject);    
var  
  Testvariable[1]  : TArrayOfInteger;  
   Testvariable2[1] : TArrayOfTTest;  
begin    
   Test(Testvariable[1],Testvariable2[1]);     
  end;

Gruß

THF


MrSaint - Mi 23.02.05 19:56

hast du das so schonmal versucht zu compilieren?!? Lern erst mal ein bisschen Delphi Grundlagen! Aber ich will ja mal net so sein: Lass einfach immer das "[1]" weg, dann ist gut!


THF - Do 24.02.05 08:12

Hallo,

aber wie mache ich das wenn ich z.B. ein Array mit 10 Figuren habe und möchte die Figur[5] als Parameter der Procedure übergeben ?

Gruß

THF

Moderiert von user profile iconTino: Überflüssige Absätze entfernt.


Sprint - Do 24.02.05 09:09

Das soll jetzt nur ein Beispiel sein.


Delphi-Quelltext
1:
2:
3:
4:
5:
type
  TFigur = record
    ValueA: Integer;
    ValueB: Integer;
  end;


Delphi-Quelltext
1:
2:
type
  TFiguren = array of TFigur;


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure Test(var AFigur: TFigur);
begin
  AFigur.ValueA := 10;
  AFigur.ValueB := 20;
end;


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
var
  Figuren: TFiguren;
begin

  SetLength(Figuren, 10);
  Test(Figuren[5]);
  SetLength(Figuren, 0);

end;