![]() |
Verschiedene Ergebnistypen?
moin,
wenn ich eine funktion sagen wir mal so aufrufe:
Delphi-Quellcode:
kann ich dann irgendwie anhand (zur laufzeit) der Zahl bestimmen ob ich String oder integer zurückliefere?
blah(0);
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? |
Re: Verschiedene Ergebnistypen?
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. |
Re: Verschiedene Ergebnistypen?
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; |
Re: Verschiedene Ergebnistypen?
Zitat:
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 |
Re: Verschiedene Ergebnistypen?
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:
end;[/delphi]
begin
if {.... (das mit der 0 halt) ...} then inte := 102023 else stre := '2323'; das brauchst du natürlich nur mehr ne procedure ;) oder aber(und jetzt kommts) du machst es per var
Delphi-Quellcode:
dann nur mehr deine abfrage rein und das wärs
procedure machdas(var i : Integer); overload;
begin end; procedure machdas(var e : String); overload; begin end; ;) |
Re: Verschiedene Ergebnistypen?
Zitat:
Label1.Caption := blah(0); // Rückgabewertr ist ein Integer Label1.Caption := blah(234); // Rückgabewertr ist ein string |
Re: Verschiedene Ergebnistypen?
moin toms,
ich hab es zwar getestet und es funktioniert auch aber: Zitat:
|
Re: Verschiedene Ergebnistypen?
Hi Pseudemys Nelsoni,
bei Variant wird die Umwandlung AFAIK automatisch erledigt. Greetz alcaeus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 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