AGB  ·  Datenschutz  ·  Impressum  







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

function mit 2 ausgabewerten

Ein Thema von bonanza · begonnen am 4. Jan 2007 · letzter Beitrag vom 4. Jan 2007
Antwort Antwort
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#1

function mit 2 ausgabewerten

  Alt 4. Jan 2007, 11:13
Hi,

ich suche nach einer möglichkeit bei einer Funktion zwei ausgabewerte zu bekommen in etwa so...

function x(a,b:string):(c,d:string)
wie kann ich das realisieren ?

über REsult kann ich ja immer nur einen wert ausgeben.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#2

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 11:14
das Thema hatten wir schon oft. Entweder nimmst du einen Record wo mehrere Werte drin sind oder nutzt var/out Parameter
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
bonanza

Registriert seit: 13. Sep 2005
134 Beiträge
 
RAD-Studio 2009 Arc
 
#3

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 11:24
also ich hab jetzt ein record dafür verwand allerdings kommt ein fehler:

Delphi-Quellcode:
function tform1.finden(a,b:string):record;
var aw:record;
  aw_zx:string;
  aw_sb:string;
end;
begin
{...}

result:=aw;
end;


{fehler:[Error] Unit1.pas(207): Identifier expected but 'RECORD' found}
was mache ich falsch ?
  Mit Zitat antworten Zitat
Dax
(Gast)

n/a Beiträge
 
#4

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 11:26
Delphi-Quellcode:
type
  TFoo = record
    a, b: string;
  end;

function Bar(s: string): TFoo;
begin
  Result.a := s + ' <- sorum';
end;
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.611 Beiträge
 
#5

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 11:27
Du musst den Record doch erst vorher noch definieren.

Delphi-Quellcode:
var Adresse: record
  name: string;
  plz: integer;
  ort: string;
end;

function AdresseFinden(a, b:string): Adresse;
begin
  Result.Name := 'String 1';
  Result.Plz := 'String 2';
  Result.Ort := 'String 3';
end;
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Harry M.
Harry M.

Registriert seit: 29. Okt 2004
Ort: Halle
462 Beiträge
 
#6

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 11:31
Delphi-Quellcode:

type
  TMyResult = Record
   S: String;
   I: Integer;
   end;

function Calc(A, B: Integer): TMyResult;
begin
  Result.S := IntToStr(A + B);
  Result.I := A + B;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
  Temp: TMyResult;
begin
  Temp := Calc(1, 1);
  showmessage(Temp.S + ' / '+ IntToStr(temp.I));
end;
Harry
Gruß Harry
www.H-Soft.info
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 12:04
Um auch mal die Alternative zu zeigen:
Delphi-Quellcode:
procedure MachIrgendwas(InputA, InputB: string; var OutputA, OutputB: string);
begin
  [...]
  OutputA := 'Balblub';
  OutputB := 'Balblub';
end;
Und so kann man das ganze dann aufrufen:
Delphi-Quellcode:
var
  s1, s2: String;
begin
  [...]
  MachIrgendwas('Text1', 'Text2', s1, s2);
  ShowMessage(s1); //s1 enthält jetzt sozusagen das erste Ergebnis
  ShowMessage(s2); //s2 enthält jetzt sozusagen das zweite Ergebnis
  [...]

EDIT:
An sich würden sogar nur die beiden var-Parameter reichen, wenn du dort schon die Sachen übergibst.
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: function mit 2 ausgabewerten

  Alt 4. Jan 2007, 13:18
Zitat von Hador:
Um auch mal die Alternative zu zeigen:
Delphi-Quellcode:
procedure MachIrgendwas(InputA, InputB: string; var OutputA, OutputB: string);
begin
  [...]
  OutputA := 'Balblub';
  OutputB := 'Balblub';
end;
Wenn Du anstatt "var" "out" hinschreibst, weiis der Compiler auch gleich, was er mit den Parametern machen soll. Und auch der Mensch sieht gleich, dass er hier etwas anderst handhaben muss.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:43 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