![]() |
Procedure, Array als Rückgabewert?
Ich habe folgende Procedure geschrieben
Delphi-Quellcode:
So sollte eigentlich der Übergabebefehl aussehen, stellte ich mir vor.
procedure EinWert(aWert: array of Integer; aStart,aEnd:Integer ;Var Wert:array of Integer);
Delphi-Quellcode:
Fehlermeldung, nicht genügend Parameter
EinWert(Wert,0,1418)
Mit:
Delphi-Quellcode:
wollte ich eigentlich ein Rückgabeparameter schreiben.
Var Wert:array of Integer
Was mache ich hier verkehrt? |
Du hast in
Delphi-Quellcode:
4 Parameter definiert und versuchst die Funktion mit 3 Parametern aufzurufen.
procedure EinWert(aWert: array of Integer; aStart,aEnd:Integer ;Var Wert:array of Integer);
|
Re: Procedure, Array als Rückgabewert?
Bin hier noch nicht ganz so gut, wo liegt mein Fehler? wie siehts richtig aus?
|
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:
Dann sieht dann Dein Prozedurkopf so aus:
TIntArray=Array of Integer;
Delphi-Quellcode:
..und der Aufruf so:
procedure EinWert(aWert: array of Integer; aStart,aEnd:Integer ;Var Wert:TIntArray);
Delphi-Quellcode:
Var
result: TIntArray; Begin EinWert(Wert,0,1418,result); End; |
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: |
Re: Procedure, Array als Rückgabewert?
Siehe überschrift, ich wollte ne ganze array zurückgeben.
|
Re: Procedure, Array als Rückgabewert?
Jo, ich habs jetzt mal so umgeschrieben wie Sidorion gesagt hat.
Delphi-Quellcode:
Jetzt meint man, das, ich hier ne zugriffsverletzung habe.
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;
Delphi-Quellcode:
Wert[y]:=0;
|
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; |
Re: Procedure, Array als Rückgabewert?
Zitat:
|
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:
Fehlermeldung:inkompatible Typen :wall: :drunken: :wall:
SetLength(Wert,aEnd);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz