![]() |
Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Hi,
ich habe eine Funktion geschrieben die mehrere Daten (Strings, Booleans und Integers) aus einer Datei extrahiert. Diese Daten sollen über nur diese eine Funktion dem User zur Verfügung stehen. Ich dachte da an einen Record
Delphi-Quellcode:
den ich der Funktion dann einfach als Rückgabewert geben
type
Tsomething = record value1: String[100]; value2: Boolean; value3: Integer; end;
Delphi-Quellcode:
Dieser record und die Funktion sind in einer extra Unit ausgelagert. Jetzt ist meine Frage:
function bla(......):Tsomething;
Kann der User der diese Unit z. B. in seiner Haupt-Unit einbindet (uses-Klausel) einfach auf den zurückgegebenen Record zugreifen obwohl Tsomething nicht in seiner Haupt-Unit deklariert ist? Und wie macht er das dann? So wie mit einen normalen, in der Unit deklarierten Record? Schonmal Danke :mrgreen: ciao, Andy |
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Zitat:
Zitat:
|
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Zitat:
|
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Ahh, das wahr ja einfach,
Danke an euch :-) |
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Allerdings gibt es (wie immer) auch hier einen Fallstrick:
Wenn der Record in verschiedenene Units deklariert ist, ist er nicht gleich, obwohl er gleich aufgebaut ist und gleich heisst. Also muss man den Record in EINER Unit deklarieren und diese EINE Unit in die anderen Units einbinden. Somit ist der Record nur einmal deklariert und somit 100%-ig identisch. |
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Zitat:
Aber gibt es auch eine record-Liste? In diesen Tutorial ( ![]()
Delphi-Quellcode:
Es sollen also mehrere records zurückgegeben werden.
type
Tsomething = record value1: String[100]; value2: Boolean; value3: Integer; end; ... function blubb:Tsomething;
Delphi-Quellcode:
Geht das so irgendwie? Wenn ja, wie verwende ich Arrays?
function blubb:array of Tsomething;
|
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Delphi-Quellcode:
TMyRecArray = array of TSomething;
function Foobar: TMyRecArray; |
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Zitat:
Delphi-Quellcode:
edit1.text := TmyRecArry[1].value1; //1 für datensatz 2?
|
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
So:
Delphi-Quellcode:
type
TMyRec = record FName: ShortString; end; TMyRecArray = array[0..1] of TMyRec; function FillMyRecArrays: TMyRecArray; var MyRecArray: TMyRecArray; i: Integer; begin for i := 0 to length(MyRecArray) - 1 do begin MyRecArray[i].FName := IntToStr(i); end; Result := MyRecArray; end; procedure TForm1.Button1Click(Sender: TObject); var MyRecArray: TMyRecArray; i: Integer; begin MyRecArray := FillMyRecArrays; for i := 0 to length(MyRecArray) - 1 do ShowMessage(MyRecArray[i].FName); end; |
Re: Idee gesucht: Mehrere Daten mit Funktion zurückgeben
Zitat:
1. Kann TMyRecArray = array[0..1] of TMyRec; nur 2 Einträge beinhalten? Wie mache ich das er unendlich viele Einträge haben kann. Also ein dynamischer Array? 2. Wenn ich einen record definiere:
Delphi-Quellcode:
Muss ich dann immer angeben wie viel Speicher reserviert werden soll (hier für 50 Zeichen)? Oder kann ich das auch weglassen um so beliebig lange Strings zu speichern?
type
tsomething = record; blubb: String[50]; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 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 by Thomas Breitkreuz