Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Funktionen mit zwei Rückgabewerten? (https://www.delphipraxis.net/73807-funktionen-mit-zwei-rueckgabewerten.html)

davar 24. Jul 2006 10:44


Funktionen mit zwei Rückgabewerten?
 
Hallo Leute,

kann man eigentlich Funktionen deklarieren, die zwei Werte zurückgeben sollen? Bei mir soll z.B. die Funktion "Auslesen" nach einer Datenbankabfrage zwei Spalten (jeweils ein Wert als String) zurückgeben. Wie mach ich das?

MfG

davar

xaromz 24. Jul 2006 10:48

Re: Funktionen mit zwei Rückgabewerten?
 
Hallo,

da kannst Du entweder den einen Wert als Rückgabewert, den anderen als var zurückgeben oder einen record definieren und diesen zurückgeben.

Gruß
xaromz

Christian18 24. Jul 2006 10:54

Re: Funktionen mit zwei Rückgabewerten?
 
Hallo,

ich habe Dir mal ein kleines Bsp. erstellt.

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TResult = record
    Wert1 : String;
    Wert2 : Integer;
  end;

type
  TForm1 = class(TForm)
    function Neu() : TResult;
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.Neu() : TResult;
begin
  // Werte zurückgeben
  Result.Wert1:='Ein String';
  Result.Wert2:=1;
end;

end.
MFG Christian18

cruiser 24. Jul 2006 10:58

Re: Funktionen mit zwei Rückgabewerten?
 
oder so:

Delphi-Quellcode:
function LiesWerte(const Quelle: Tirgendwas; const Index: integer; var Wert1, Wert2: string;):boolean;
begin

  {Hier kommt das Auslesen hin}

  Wert1 := 'was weiss ich';
  Wert2 := 'was weiss ich';
  Result := true; {oder false bei Fehlschlag}
end;
In dem Fall hats drei Rückgaben... die Variablen die du für Wert1 und Wert2 übergibst werden direkt geändert. Ausserdem kannst du es in eine If-Abfrage hängen und so herausbekommen ob es überhaupt geklückt ist ;)

Go2EITS 24. Jul 2006 11:07

Re: Funktionen mit zwei Rückgabewerten?
 
So z. B.
Procedure StoreDBStrings(Var String1,String2:String);
begin
// Holen der Daten aus der Datenbank und in Datenbankstring1 und Datenbankstring2;
...
//Zuweisen der beiden Strings:
String1:=Datenbankstring1;
String2:=Datenbankstring2;
end;
Natürlich kannst Du beim Holen der Daten aus der Datenbank gleich String1 und String2 die Daten zuweisen.

oder etwas schöner...
Delphi-Quellcode:
Function StoreDBStrings (Var String1,String2:String):boolean;
begin
// Holen der Daten aus der Datenbank
...
Erfolgreich? //GetDBGetStrings sollte auch eine Funktion von Typ Boolean sein...
if GetDBgetStrings then //Ist klar? "if GetDBgetStrings" steht für "if GetDBgetStrings=true"
begin
//Zuweisen der beiden Strings:
String1:=Datenbankstring1;
String2:=Datenbankstring2;
result:=true
end
else result:=false;
end;
Ach ja: Wenn der Wert eine Zahl ist, musst du entsprechend ein IntToStr oder FloatToStr verwenden.

@Christian18 Schönes Beispiel mit den Records ! :spin2:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:20 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