Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi try ... except EConvertError (https://www.delphipraxis.net/100549-try-except-econverterror.html)

markbolten 30. Sep 2007 09:40


try ... except EConvertError
 
Hallo,
ich will ein string in eine currency - variabel umwandeln (Delphi7).

Delphi-Quellcode:

   try
    fValue := strtofloat(text);
   except
    on EConvertError do
     begin
      fValue :=0;
     end;
    end;

wenn text='1,23,00' ist,bricht das Programm direkt nach fValue := strtofloat(text); mit
einer Exception EConvertError Fehlermeldung ab, ohne die except on EConvertError
Anweisung zu beachten .

WARUM wird die try Anweisung ignoriert?

Danke

DeddyH 30. Sep 2007 09:42

Re: try ... except EConvertError
 
Passiert das auch, wenn Du das Programm außerhalb der IDE laufen lässt?

markbolten 30. Sep 2007 09:51

Re: try ... except EConvertError
 
Zitat:

Zitat von DeddyH
Passiert das auch, wenn Du das Programm außerhalb der IDE laufen lässt?

Nein, kann man dies auch während/in der IDE erreichen ?

DeddyH 30. Sep 2007 09:58

Re: try ... except EConvertError
 
Liste der Anhänge anzeigen (Anzahl: 1)
Schau mal unter "Tools-Debugger-Optionen" (zumindest bei Delphi 7)

jbg 30. Sep 2007 10:02

Re: try ... except EConvertError
 
Alternativ könntest du das ganze auch gleich ohne Exception machen:

Delphi-Quellcode:
if not TryStrToFloat(text, fValue) then
  fValue := 0;

FAlter 30. Sep 2007 12:30

Re: try ... except EConvertError
 
Hi,

Zitat:

Zitat von markbolten
ich will ein string in eine currency - variabel umwandeln (Delphi7).

Delphi-Quellcode:
if not TryStrToCurr(Text, FValue) then
  FValue := 0;
Dies sollte die beste Variante sein. Extended kann zwar implizit in Currency umgewandelt werden, aber die Verwendung der speziellen Funktionen für Currency (StrToCurr, CurrToStr, ...) ist bei der Verwendung von Currency die bessere Wahl.

Und natürlich, wie auch von jbg vorgeschlagen, am besten die Exception vermeiden ;)

Mfg
FAlter

[edit] Natürlich TryStrToCurr[/edit]

arc 19. Aug 2011 23:36

AW: try ... except EConvertError
 
Das ist ein super Tip, habe das gleiche Problem und die Lösung gleich umgesetzt.

Ich nehme für Integer gern die alte val funktion, da es mir idR genügt eine 0 zu haben falls ein Fehler auftritt.

Code:
  if not TryStrToCurr(s, result) then result:=0;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 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