AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Rückgabewert könnte undefiniert sein !
Thema durchsuchen
Ansicht
Themen-Optionen

Rückgabewert könnte undefiniert sein !

Ein Thema von kiar · begonnen am 18. Mär 2004 · letzter Beitrag vom 18. Mär 2004
Antwort Antwort
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#1

Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 12:54
folgende Funktion
Delphi-Quellcode:
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;
ist ja klar, das der Rückgabewert undefiniert sein kann und zwar wenn
 a = 0 habe den else Teil so geändert
Delphi-Quellcode:
else
 begin
    showmessage('Es müssen beide Felder ausgefüllt werden!');
    result :=now;
 end;
das gefällt mir aber nicht.

was gibt es für lösungsmöglichkeiten.

danke raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#2

Re: Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 13:06
Delphi-Quellcode:
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;
was gefällt dir denn daran nicht?

das ist die wohl Beste Möglichkeit.

Es geht natürlich auch so:
Delphi-Quellcode:
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;
wobei es so auch ganz nett ist ^^

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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#3

Re: Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 13:07
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;
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Dannyboy

Registriert seit: 4. Aug 2003
Ort: Delphi-Heaven
418 Beiträge
 
Delphi 7 Personal
 
#4

Re: Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 13:09
@himitsu: Ok, Du warst wohl ein paar Milisekunden schneller als ich.
How much wood would a wood-chuck chuck if a wood-chuck would chuck wood?
Check this out.
DANNYBOY
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#5

Re: Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 13:13
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
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.153 Beiträge
 
Delphi 12 Athens
 
#6

Re: Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 13:18
Na wenn du's nicht brauchst, dann gehts auh so

Delphi-Quellcode:
begin
    showmessage('Es müssen beide Felder ausgefüllt werden!');
    result :=now;
end;
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
woki

Registriert seit: 29. Mär 2003
563 Beiträge
 
Delphi 2006 Architect
 
#7

Re: Rückgabewert könnte undefiniert sein !

  Alt 18. Mär 2004, 13:23
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
  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 09:49 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