AGB  ·  Datenschutz  ·  Impressum  







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

Verschiedene Ergebnistypen?

Ein Thema von Pseudemys Nelsoni · begonnen am 14. Nov 2004 · letzter Beitrag vom 14. Nov 2004
Antwort Antwort
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#1

Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:12
moin,

wenn ich eine funktion sagen wir mal so aufrufe:

blah(0); kann ich dann irgendwie anhand (zur laufzeit) der Zahl bestimmen ob ich String oder integer zurückliefere?

Es geht darum das ich bei der Übergabe von "0" einen integer zurückliefern möchte, bei allem anderen als 0 eben einen string. Überladen geht nicht, da sich die funktionen von den parametern her nicht unterscheiden. Es ist mir nur wichtig das die funktion den gleichen namen hat, geht das überhaupt?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:17
Du kannst afaik nicht mit einer Funktion zwei ergebnistypen zurückgeben.
Lösung eins wäre stattdessen einen Leerstring zurückzugeben,
Lösung zwei wäre ein eigener Typ.
Das könnte z.B. ein Record sein, mit einem Integer und einem String-Feld.
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#3

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:19
Hi,

Vielleicht mit einem Variant als Result?

Delphi-Quellcode:
function blah(param: Integer): variant;
begin
 if param = 0 then
   Result := 123
 else
   Result := 'ein string';
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#4

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:20
Zitat:
Lösung eins wäre stattdessen einen Leerstring zurückzugeben
ne, wie gesagt es muss integer sein, da eine übergebene "0" heissen soll das die wörter die ein string enthält gezählt werdensollen.

lösung 2 werd ich dann wohl nehmen (müssen)

danke für deine hilfe



@toms: sieht sehr gut aus, kannst du mir noch sagen wie ich das beim aufruf dann verwende? oder läuft das automatisch?

dachte muss so aussehen wie blah(0).AsInteger oder so
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Nicodius

Registriert seit: 25. Apr 2003
Ort: Graz
2.234 Beiträge
 
Delphi 2006 Architect
 
#5

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:24
am einfachsten wäre es wenn du das nicht über ein result sondern über private/globale variablen machst


also zusätzlich 2 variablen

stre : string;
inte : integer;

Delphi-Quellcode:
begin
  if {.... (das mit der 0 halt) ...} then
    inte := 102023
  else
    stre := '2323';
end;[/delphi]

das brauchst du natürlich nur mehr ne procedure

oder aber(und jetzt kommts) du machst es per var



Delphi-Quellcode:
procedure machdas(var i : Integer); overload;
begin
  
end;
procedure machdas(var e : String); overload;
begin

end;
dann nur mehr deine abfrage rein und das wärs
Nico Müller
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#6

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:54
Zitat von Pseudemys Nelsoni:
Zitat:
Lösung eins wäre stattdessen einen Leerstring zurückzugeben

@toms: sieht sehr gut aus, kannst du mir noch sagen wie ich das beim aufruf dann verwende? oder läuft das automatisch?

dachte muss so aussehen wie blah(0).AsInteger oder so
Geht ganz einfach so:


Label1.Caption := blah(0); // Rückgabewertr ist ein Integer

Label1.Caption := blah(234); // Rückgabewertr ist ein string
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Pseudemys Nelsoni
Pseudemys Nelsoni

Registriert seit: 24. Dez 2002
Ort: Hamburg-Harburg
3.551 Beiträge
 
#7

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 08:59
moin toms,

ich hab es zwar getestet und es funktioniert auch aber:

Zitat:
Label1.Caption := blah(0); // Rückgabewertr ist ein Integer
sollten string und integer nicht inkompatibel sein oder wird das automatisch irgendwie erledigt?
Mario
MSN: cyanide@ccode.de
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#8

Re: Verschiedene Ergebnistypen?

  Alt 14. Nov 2004, 09:20
Hi Pseudemys Nelsoni,

bei Variant wird die Umwandlung AFAIK automatisch erledigt.

Greetz
alcaeus
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  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 15:45 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