AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Procedure, Array als Rückgabewert?

Ein Thema von Hallo_Thomas · begonnen am 12. Jul 2005 · letzter Beitrag vom 12. Jul 2005
Antwort Antwort
Seite 1 von 3  1 23      
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#1

Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 13:51
Ich habe folgende Procedure geschrieben


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

EinWert(Wert,0,1418) Fehlermeldung, nicht genügend Parameter


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

Was mache ich hier verkehrt?
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#2
  Alt 12. Jul 2005, 13:55
Du hast in
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:12
Bin hier noch nicht ganz so gut, wo liegt mein Fehler? wie siehts richtig aus?
  Mit Zitat antworten Zitat
Sidorion

Registriert seit: 23. Jun 2005
403 Beiträge
 
#4

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:13
Nachdem Delphi sich etwas affig hat mit typen von var-parametern solltest Du Dir vorher einen Typ deklarieren:
TIntArray=Array of Integer; Dann sieht dann Dein Prozedurkopf so aus:
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;
Manchmal sehen Dinge, die wie Dinge aussehen wollen mehr wie Dinge aus, als Dinge
<Esmerelda Wetterwachs>
  Mit Zitat antworten Zitat
Benutzerbild von Steve
Steve

Registriert seit: 2. Mär 2004
Ort: Würzburg
730 Beiträge
 
Delphi 2006 Personal
 
#5

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:19
Hi,

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

Gruß
Stephan
Stephan B.
Wer andern eine Grube gräbt ist Bauarbeiter!
Wer im Glashaus sitzt, sollte sich lieber im Dunkeln ausziehen!
Außerdem dieser Satz kein Verb...
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#6

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:52
Siehe überschrift, ich wollte ne ganze array zurückgeben.
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#7

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:55
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.

Wert[y]:=0;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:57
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;
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 14:58
Zitat von Hallo_Thomas:
Jetzt meint man, das, ich hier ne zugriffsverletzung habe.

Wert[y]:=0;
Du musts ja auch erst mal die Länge deines dynamischen Arrays setzen mit SetLength.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Hallo_Thomas

Registriert seit: 18. Apr 2005
Ort: Dresden
405 Beiträge
 
Delphi 2005 Professional
 
#10

Re: Procedure, Array als Rückgabewert?

  Alt 12. Jul 2005, 15:36
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;

SetLength(Wert,aEnd); Fehlermeldung:inkompatible Typen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:58 Uhr.
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