Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Rückgabewert der Funktion '<Element>' könnte undefiniert sei (https://www.delphipraxis.net/79082-rueckgabewert-der-funktion-element-koennte-undefiniert-sei.html)

Karstadt 16. Okt 2006 07:42


Rückgabewert der Funktion '<Element>' könnte undefinie
 
hallo. Habe viele Warnungen in meinen Projekt. Muss ich IMMER auf solche Warnungen achten? Kann man das irgendwo abschalten, das mir alle Ereignisse angezeigt werden aber nicht die Warnungen?

mkinzler 16. Okt 2006 07:58

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
Einfach alle Variablen sauber initialisieren, dann treten keine Warungen mehr auf ;-)

hsg 16. Okt 2006 08:03

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
Warnungen sollte man sehr ernst nehmen, da sie dich auf gefährliche Stellen in deinem Source hinweisen.
Mich haben die Warnungen schon vor so manche böse Überraschung bewahrt: Eine nicht initialisierte Variable (z.B. eine Stringlist, die nicht erzeugt wurde und trotzdem verwendet wird, wird dir auf jeden Fall eine AV liefern)
Undefinierte Rückgabewerte von Funktionen können deine Berechnungen ordentlich durcheinander würfeln.
Solltest du die Rückgabewerte gar nicht verwenden, hast du einen Fehler in deinem Design, also solche Stellen dann noch mal überdenken.

Sunlight7 16. Okt 2006 08:12

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
Zitat:

Zitat von hsg
Solltest du die Rückgabewerte gar nicht verwenden, hast du einen Fehler in deinem Design, also solche Stellen dann noch mal überdenken.

Oder als procedure schreiben, wenn es keinen Rückgabewert braucht.

Ein häufiger Fehler, Beispiel:
Delphi-Quellcode:
function Test(Value:Byte):Boolean;
   var temp:Byte;
begin
   try
      temp:=128 div Value;
      Result:=(temp>64);
   except
   end;
end;
Wenn Value 0 ist, ist der Rückgabewert nicht definiert, kann also True oder False sein.

Karstadt 16. Okt 2006 08:22

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
...werde es überprüfen und ändern. Momentan habe ich sehr viele solche Warnungen. Bis jetzt habe ich das immer ignoriert. (Es gab auch keine AV). Werde ich mich darum kümmern.

Karstadt 16. Okt 2006 08:28

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
Delphi-Quellcode:
Function GibSchadensFarbe(Farbnr:Integer):Integer;
var Farbe: String;
begin
  case Farbnr of
    0: Farbe := 'clBlue';
    1: Farbe := 'clRed';
    2: Farbe := 'clWhite';
  250: Farbe := 'clNone';
  end;
end;
Hier ist eine Beispiel. Ich rufe diese Funktion immer mit Werten 0-250. Das sind feste Werte und die können nicht auf einmal -1 oder > 250 sein. Nun bekomme ich an diese Stelle ein Warnung. Ich frage mich, was würde die warnung an diese Stelle bedeuten, da ich ganz ganau weis, das es nicht zu eine AV kommen kann. Da die Farbnr immer zwischen 0 und 250 befindet... (die Funktion wurde verkürzt in diesen Beispiel)

diComm 16. Okt 2006 08:34

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
Du definierst hier

Delphi-Quellcode:
Function GibSchadensFarbe(Farbnr:Integer):Integer;
das du einen Integer zurückgibst, tust das aber im Code nicht. Eine Funktion sollte immer ein Result haben, ansonsten mach eine procedure draus.

Karstadt 16. Okt 2006 08:37

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
..stimmt. Bei funktionen kann man etweder die Funktionname oder Result verwenden um den Rückgabewert zu übergeben. Aber dieses Beispiel ist sehr schlecht ;) sehe ich jetzt erst.. Gut. Dann mache ich mich an die Arbeite ;)

Karstadt 16. Okt 2006 08:40

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
wie soll ich mit diese Warnung umgehen?

Unit '<Element>' ist plattformspezifisch (FileCtrl)

Sunlight7 16. Okt 2006 08:42

Re: Rückgabewert der Funktion '<Element>' könnte undef
 
Dies Beispiel ist nicht schlecht, denn:

Delphi-Quellcode:
Function GibSchadensFarbe(Farbnr:Integer):Integer;
begin
  case Farbnr of
    0: Result := 'clBlue';
    1: Result := 'clRed';
    2: Result := 'clWhite';
  250: Result := 'clNone';
  else Result := 'clNone'; // <- Das hast Du vergessen, damit sicher ein gültiger Wert zurück gegeben wird.
  end;
end;
Edit: Roter Kasten, wo warst Du?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:47 Uhr.
Seite 1 von 2  1 2      

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