![]() |
Rückgabewert könnte undefiniert sein !
folgende Funktion
Delphi-Quellcode:
ist ja klar, das der Rückgabewert undefiniert sein kann und zwar wenn
function Holedaten(s:string):TDatetime;
var a:string; begin a:= Stringreplace(stringreplace(s,'.','0',[rfReplaceAll]),' ','0', [rfReplaceAll]); if strtoInt(a) <> 0 then result:=(strtoDate(s)) else showmessage('Es müssen beide Felder ausgefüllt werden!'); end;
Delphi-Quellcode:
habe den else Teil so geändert
a = 0
Delphi-Quellcode:
das gefällt mir aber nicht.
else
begin showmessage('Es müssen beide Felder ausgefüllt werden!'); result :=now; end; was gibt es für lösungsmöglichkeiten. danke raik |
Re: Rückgabewert könnte undefiniert sein !
Delphi-Quellcode:
was gefällt dir denn daran nicht?
function Holedaten(s:string):TDatetime;
var a:string; begin a:= Stringreplace(stringreplace(s,'.','0',[rfReplaceAll]),' ','0', [rfReplaceAll]); if strtoInt(a) <> 0 then result:=(strtoDate(s)) else begin showmessage('Es müssen beide Felder ausgefüllt werden!'); result :=now; end; end; das ist die wohl Beste Möglichkeit. Es geht natürlich auch so:
Delphi-Quellcode:
wobei es so auch ganz nett ist ^^
function Holedaten(s:string):TDatetime;
var a:string; begin result :=now; a:= Stringreplace(stringreplace(s,'.','0',[rfReplaceAll]),' ','0', [rfReplaceAll]); if strtoInt(a) <> 0 then result:=(strtoDate(s)) else showmessage('Es müssen beide Felder ausgefüllt werden!'); end;
Delphi-Quellcode:
function Holedaten(s:string):TDatetime;
begin if strtoInt(Stringreplace(stringreplace(s,'.','0',[rfReplaceAll]), ' ','0',[rfReplaceAll])) <> 0 then result:=(strtoDate(s)) else begin showmessage('Es müssen beide Felder ausgefüllt werden!'); result :=now; end; end; |
Re: Rückgabewert könnte undefiniert sein !
Einfach mal initialisieren:
Delphi-Quellcode:
function Holedaten(s:string):TDatetime;
var a:string; begin result:= now; //hier wird initialiseirt. Ich übernehme diese Zeile aus Deinem Bsp. a:= Stringreplace(stringreplace(s,'.','0',[rfReplaceAll]),' ','0', [rfReplaceAll]); if strtoInt(a) <> 0 then result:=(strtoDate(s)) else showmessage('Es müssen beide Felder ausgefüllt werden!'); end; |
Re: Rückgabewert könnte undefiniert sein !
@himitsu: Ok, Du warst wohl ein paar Milisekunden schneller als ich. :)
|
Re: Rückgabewert könnte undefiniert sein !
hallo himitsu,
weil, bei now zwar der rückgabewert definiert ist, ich den aber nicht brauche. naja, ich denke in dem algo für die abfrage muß ich was ändern. raik |
Re: Rückgabewert könnte undefiniert sein !
Na wenn du's nicht brauchst, dann gehts auh so
Delphi-Quellcode:
Oder wenn der Rückgabewert der Funktion eh nicht ausgewertet wird, wenn der die Eingabe falsch ist, dann mach's wie M$ und ignoriere einfach den Fehler :roll:
begin
showmessage('Es müssen beide Felder ausgefüllt werden!'); result :=now; end; |
Re: Rückgabewert könnte undefiniert sein !
HI,
ich finde die Lösung mit dem now doch sehr überraschend, ohne jetzt genaueres über den Kontext zu wissen, würde ich sagen für den Fall, dass die Auswertung fehtlschlägt, wäre es angemesseen eine exception auszulösen, und wenn in einer solchen Situation etwas zurückgeliefert wird, dann ein fester Wert, z.B. 0, bei now hat der Aufrufer der Funktion überhaupt keine Chance, zu erkennen, dass hier etwas schiefgegangen ist. Grüsse Woki |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 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