![]() |
Funktion mit Array als Result
Hi!
Ich schreib meine Frage mal hier rein, man muss ja nicht mehr Topics als nötig eröffnen. Also: Ich hab eine schöne Delphianwendung. Da ich noch am Rumwerkeln bin, und mir der Code ein wenig zu lang war, hab ich die Teile, an denen ich nichts mehr ändern werde, mal in eine neue Unit ausgelagert. Unter anderem auch den Teil, wo zu Beginn die Einstellungen von einer Textfile eingelesen werden. Das ganze wird zeilenweise in einen array eingelesen. Wenn man das ganz normal macht, kann man das wunderbar tun. Jetzt hab ich aber versucht eine function zu schreiben, die als Result genau diesen array hat und sie einfach an das Programm weitergibt. Aber wie das so ist, mein gutes Delphi will keinen Array als Ergebnis einer Funktion haben!!! Was mach ich falsch??? |
Hi Kalle,
ich habe Deine Anfrage trotzdem in einen neuen Thread verschoben, da das an dieser Stelle durchaus sinnvoll ist - letztenendes ist das ein neues Problem ;) |
Du musst einen neuen Datentyp deklarieren, dann geht das. Beispiel gefällig?
Delphi-Quellcode:
type
TMyArrayResult = array of Integer; function GetMeAnArray: TMyArrayResult; var I: Integer; begin SetLength(Result, 10); for I := 0 to 9 do Result[I] := Random(MaxInt); end; |
Wenn ihr meint, mir solls egal sein.
Mal testen, ich sag euch dann Bescheid, ob es geklappt hat. |
Zitat:
Durch das Nutzen dieser Threads "hälst" Du halt einige Leute von der Diskussion ab, obwohl diese Dir sehr gut helfen könnten. Und ein extra Thread kostet auch nicht mehr Speicherplatz als das Fortsetzen eine alten. ...:cat:... |
So weit, so gut. Aber wenn ich das Ergebnis jetzt zuordnen will, geht
Delphi-Quellcode:
nicht. Ich kann zwar
type
TIntegers = array of Integer; procedure TForm1.Create; var MeinArray: TIntegers; begin setlength(MeinArray,10); MeinArray := GetMeAnArray; end;
Delphi-Quellcode:
draus machen. Aber dann brauch ich nicht jedesmal in der Funktion einen Array draus zu machen, dann reichts ja, wenn er einen einfachen Integer zurückgibt.
type
TIntegers = array of Integer; procedure TForm1.Create; var MeinArray: TIntegers; i: integer; begin setlength(MeinArray,10); for i := 0 to 9 do MeinArray[i] := GetMeAnArray[i]; end; |
Hab deine antwort oben nicht gesehen, das "so weit so gut" ist auf den code bezogen
manche forenmoderatoren meinen aber: je weniger topics, desto mehr übersicht. |
*grübel* *grübel*
Mein Code sieht wie folgt aus und funktioniert wie erwartet:
Delphi-Quellcode:
...:cat:...
implementation
{$R *.DFM} type TMyArrayResult = array of Integer; function GetMeAnArray: TMyArrayResult; var I: Integer; begin SetLength(Result, 10); for I := 0 to 9 do Result[I] := Random(MaxInt); end; procedure TForm1.FormCreate(Sender: TObject); var A: TMyArrayResult; I: Integer; begin A := GetMeAnArray; for I := Low(A) to High(A) do ShowMessage(IntToStr(A[I])); end; |
*zurückgrübel* :shock: :?:
nochmal testen! *aufreg* :evil: :!: |
Es klappt!
Ich habe das ja zwei units gehabt und dann leider in beiden
Delphi-Quellcode:
reingepackt. Dann meinte Delphi immer "Incompatible types". Jetzt hab ich es aus einer rausgenommen und alles klappt. :D :D
type
TMyArrayResult = array of Integer; Danke für die schnelle Hilfe. Das Forum sieht schön aus, und man bekommt auch hilfreiche Antworten! Danke!!! Ich programmiere noch nicht so lange mit Delphi und schau bestimmt mal wieder vorbei! CU |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 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