Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Procedure, Array als Rückgabewert? (https://www.delphipraxis.net/49518-procedure-array-als-rueckgabewert.html)

Hallo_Thomas 12. Jul 2005 13:51


Procedure, Array als Rückgabewert?
 
Ich habe folgende Procedure geschrieben


Delphi-Quellcode:
procedure EinWert(aWert: array of Integer; aStart,aEnd:Integer ;Var Wert:array of Integer);
So sollte eigentlich der Übergabebefehl aussehen, stellte ich mir vor.

Delphi-Quellcode:
EinWert(Wert,0,1418)
Fehlermeldung, nicht genügend Parameter


Mit:
Delphi-Quellcode:
Var Wert:array of Integer
wollte ich eigentlich ein Rückgabeparameter schreiben.

Was mache ich hier verkehrt?

Bernhard Geyer 12. Jul 2005 13:55

Du hast in
Delphi-Quellcode:
procedure EinWert(aWert: array of Integer; aStart,aEnd:Integer ;Var Wert:array of Integer);
4 Parameter definiert und versuchst die Funktion mit 3 Parametern aufzurufen.

Hallo_Thomas 12. Jul 2005 14:12

Re: Procedure, Array als Rückgabewert?
 
Bin hier noch nicht ganz so gut, wo liegt mein Fehler? wie siehts richtig aus?

Sidorion 12. Jul 2005 14:13

Re: Procedure, Array als Rückgabewert?
 
Nachdem Delphi sich etwas affig hat mit typen von var-parametern solltest Du Dir vorher einen Typ deklarieren:
Delphi-Quellcode:
TIntArray=Array of Integer;
Dann sieht dann Dein Prozedurkopf so aus:
Delphi-Quellcode:
procedure EinWert(aWert: array of Integer; aStart,aEnd:Integer ;Var Wert:TIntArray);
..und der Aufruf so:
Delphi-Quellcode:
Var
  result: TIntArray;
Begin
  EinWert(Wert,0,1418,result);
End;

Steve 12. Jul 2005 14:19

Re: Procedure, Array als Rückgabewert?
 
Hi,

wenn Du einen Rückgabewert willst - warum nimmst Du dann ne Prozedur und nicht einfach ne Funktion??

Gruß
Stephan :dance:

Hallo_Thomas 12. Jul 2005 14:52

Re: Procedure, Array als Rückgabewert?
 
Siehe überschrift, ich wollte ne ganze array zurückgeben.

Hallo_Thomas 12. Jul 2005 14:55

Re: Procedure, Array als Rückgabewert?
 
Jo, ich habs jetzt mal so umgeschrieben wie Sidorion gesagt hat.


Delphi-Quellcode:
procedure TForm1.EinWert(aWert: array of Integer;aStart,aEnd:Integer;Var WERT:array of Integer);
Var y :Integer ;
begin

  for y := aStart to aEnd do
  Wert[y]:=0;

end;
Jetzt meint man, das, ich hier ne zugriffsverletzung habe.

Delphi-Quellcode:
Wert[y]:=0;

Luckie 12. Jul 2005 14:57

Re: Procedure, Array als Rückgabewert?
 
Geht doch auch mit einer Funktion. Du musst dir nur einen eigenen Typen deklarieren, wie oben schon mal beschrieben.
Delphi-Quellcode:
type
  TMyIntArray = array of Integer;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function foo(len: Integer): TMyIntArray;
var
  i: Integer;
begin
  SetLength(result, len);
  for i := 0 to Length(result) - 1 do
    result[i] := i;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i: Integer;
  IntArray: TMyIntArray;
begin
  IntArray := foo(5);
  for i := 0 to length(IntArray) - 1 do
    Listbox1.Items.Add(IntToStr(IntArray[i]));
end;

Luckie 12. Jul 2005 14:58

Re: Procedure, Array als Rückgabewert?
 
Zitat:

Zitat von Hallo_Thomas
Jetzt meint man, das, ich hier ne zugriffsverletzung habe.

Delphi-Quellcode:
Wert[y]:=0;

Du musts ja auch erst mal die Länge deines dynamischen Arrays setzen mit SetLength.

Hallo_Thomas 12. Jul 2005 15:36

Re: Procedure, Array als Rückgabewert?
 
Wahrscheinlich häng ich hier an einem ganz einfacehn Problem,
(Sehr vereinfacht, soll nur dazu dienen um Problem darzusellen


Procedure1

Hauptberechnung

hier wird auch die Array Wert mit einem Wert versehen

Nun soll in Procedure Werteins die Array Wert auf null gesetzt werden.



Delphi-Quellcode:
procedure TForm1.EinWert(aWert: array of Integer;aStart,aEnd:Integer;Var Wert:array of Integer);
Var y :Integer ;
begin
  SetLength(Wert,1500);
  for y := aStart to aEnd do
  Wert[y]:=0;

end;

Delphi-Quellcode:
SetLength(Wert,aEnd);
Fehlermeldung:inkompatible Typen :wall: :drunken: :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:23 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz