AGB  ·  Datenschutz  ·  Impressum  







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

function mit zwei Rückgabewerten?

Ein Thema von Hansi · begonnen am 24. Aug 2006 · letzter Beitrag vom 24. Aug 2006
Antwort Antwort
Seite 1 von 3  1 23      
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#1

function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 10:43
Hey,

Ich habe einen function geschrieben die mir einen Rückgabewert liefert und zwar ein String. Nun möchte ich aber dass die Function mir, wenn ich einen StringA reinliefere, einen StringB und einen IntegerA zurückgibt.

Wie mache ich sowas?
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi
Online

Registriert seit: 17. Jul 2005
847 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 10:44
Nimm eine Prozedur mit zwei VAR-PArametern.
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.875 Beiträge
 
Delphi 12 Athens
 
#3

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 10:47
function MachWas (StringA : String; var IntegerA : integer) : string; Parameter, die mit var angegeben werden, werden nach Funktionsaufruf an den Aufrufer zurückgegeben.

Hope it helps

onlinekater
Thomas Breitkreuz
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 10:51
Alternativ nimmst du einen Record. Dies macht vorallem dann Sinn, wenn es mal mehr wie 2 Rückgabewerte sind oder wenn du schon mehrere Inputparameter hast.
Delphi-Quellcode:
TErgebnis = record
   Name : string;
   Anzahl : integer;
end;
procedure MachWas(var erg:TErgebnis);
Andreas
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#5

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 10:53
Danke euch dreien...

Ich probiere den Ansatz mit dem record mal.

mfg
Hansi
  Mit Zitat antworten Zitat
Benutzerbild von ManuMF
ManuMF

Registriert seit: 11. Jul 2005
1.016 Beiträge
 
Delphi 6 Personal
 
#6

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 10:57
Ich hätte auch ein Record vorgeschlagen, aber als Rückgabewert:
Delphi-Quellcode:
// Typendefinition
type
  TStringAndInt = Record
    rString: String;
    rInteger: Integer;
  end;

// Irgendwo im Code ;-)

function Test: TStringAndInt;
begin
  result.rString := 'Test';
  result.rInteger := 123;
end;

// Und zum Ausführen

procedure TForm1.Button1Click(Sender: TObject);
var
  Rueckgabe: TStringAndInt;
begin
  Rueckgabe := Test;
  Showmessage(Rueckgabe.rString + ' ' + IntToStr(Rueckgabe.rInteger));
end;
Du musst dazu wie oben im code in der Prozedur / Funktion, die etwas mit dem Rückgabewert machen soll, diesen noch mal als Variable definieren, sonst musst du deine Funktion mehrfach aufrufen:
Showmessage(Test.rString + ' ' + IntToStr(Test.rInteger)); Aber das geht natürlich auf Kosten der Geschwindigkeit.
Gruß,
ManuMF

Endlich hab ich was Positives an Vista entdeckt: Das mitgelieferte Mahjongg
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.312 Beiträge
 
Delphi XE2 Professional
 
#7

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 11:01
Hallo

oder du verwendest "out"

Delphi-Quellcode:
procedure Test(out i: Integer; out S: String);
begin
  i := 123;
  S := DP;
end;
[edit]Delphi-Tags vergessen! Sorry! [/edit]
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 11:34
Zitat von Helmi:
Hallo

oder du verwendest "out"

Delphi-Quellcode:
procedure Test(out i: Integer; out S: String);
begin
  i := 123;
  S := DP;
end;
[edit]Delphi-Tags vergessen! Sorry! [/edit]
OT: Aber das muss sein: "Undefinierter Bezeichner 'DP'."

Also es gibt wie gesagt nur die 2-3 drei Möglichkeiten die ich grad nochmal zusammenfasse damit ich nicht nur OT geschrieben hab

1. Function gibt ein Record zurück

Delphi-Quellcode:
ABC = record
 A: String
 B: Integer;
 C: Boolean;
end;

function GetaABC: ABC;
begin
 ABC.A := 'Hallo';
 ABC.B := 22;
 ABC.C := true;
end;
2. Proceduren mit Out-Parametern
Delphi-Quellcode:
procedure GiveMeAnA(out AA: String);
begin
 AA:= 'A';
end;
3. Das gleiche mit Var-Parametern.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Hansi

Registriert seit: 8. Okt 2004
271 Beiträge
 
#9

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 11:36
Hallo ManuMF,

Leider habe ich dich an dem einen Punkt mit dem zweifachen aufrufen nicht ganz verstanden.
Bis jetzt habe ich:

Das deklariert:
Delphi-Quellcode:
type
    Ttest = Record
    test_String: String;
    test_Integer: Integer;
  end;
dann die function:
Function test(StringA: String): Ttest; und rufe über:
Delphi-Quellcode:
s := test(Edit1.Text).test_String;
i := test(Edit1.Text).test_Integer;
die function auf.
Nur wird diese 2x durchlaufen.

Wie kann ich das verhindern?
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: function mit zwei Rückgabewerten?

  Alt 24. Aug 2006, 11:38
Delphi-Quellcode:
with test(Edit1.Text) do
begin
  s := test_String;
  i := test_Integer;
end;
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  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 08:23 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