Autor Beitrag
mwestbom
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 04.03.08 21:06 
Hallo,
Ich komme mit einer Funktion nicht klar, die ein Array zurückgeben soll.
Ich habe folgendes gemacht:

ausblenden Delphi-Quelltext
1:
2:
type 
TResultsArray = array of string;


dann:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
function StandardWerte(stVorgang:string):TResultsArray; 
var 
stArr : array of string; 
begin 
stArr[0] := '1'; 
stArr[1] := '2'; 
result := stArr; 
end;

Meldung beim Compilieren: inkompatible Typen

Danke im Voraus.

Moderiert von user profile iconGausi: Delphi-Tags hinzugefügt
Moderiert von user profile iconTino: Topic aus Sonstiges (Delphi) verschoben am Mi 05.03.2008 um 18:14
Jann1k
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 866
Erhaltene Danke: 43

Win 7
TurboDelphi, Visual Studio 2010
BeitragVerfasst: Di 04.03.08 21:14 
Deklariere doch stArr einfach auch als ein TResultsArray.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Di 04.03.08 21:16 
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
type
  TResultsArray = array of string;

function StandardWerte(stVorgang:string):TResultsArray;
var
  stArr : array of string;
begin
  setlength(stArr, 2);

  stArr[0] := '1';
  stArr[1] := '2';

  result := @stArr[0]; // Übergibt die Speicher-Adresse des Arrays mit Offset(?)
end;
...
 showmessage(standardwerte('as')[1]);


MfG,
Marc.

€: Es genügt dem stArr eine feste Länge zu geben.
Nachteil an der Variante ist, dass bei nachträglicher Änderung von stArr sich diese auch auf Result auswirkt.
So far..


Zuletzt bearbeitet von Marc. am Di 04.03.08 21:24, insgesamt 2-mal bearbeitet
mwestbom Threadstarter
Hält's aus hier
Beiträge: 2



BeitragVerfasst: Di 04.03.08 21:20 
Titel: Funktion Array als Rückgabe
user profile iconJann1k hat folgendes geschrieben:
Deklariere doch stArr einfach auch als ein TResultsArray.


Hat funktioniert, Danke!
Yogu
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2598
Erhaltene Danke: 156

Ubuntu 13.04, Win 7
C# (VS 2013)
BeitragVerfasst: Di 04.03.08 21:22 
Warum schreibst du denn nicth gleich in Result? Dann gibt es doch keine Probleme.

Sonst musst du alle Variablen gleich deklarieren, also alle vom Typ TResultsArray. Dann funktionieren meines Wissens nach auch direkte Zuweisungen.