Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StrToInt Erorror vermeiden ! (https://www.delphipraxis.net/113373-strtoint-erorror-vermeiden.html)

Delphiturbo 6. Mai 2008 22:23


StrToInt Erorror vermeiden !
 
Hallo
die Freude hält nicht länger und schon ein neues Problem da :mrgreen:

So wird den Wert s1 von ini Datei geholt
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var MyIniFile : TInifile;
begin
MyIniFile := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'MyIniFile.ini');
s1 := MyIniFile.ReadString('Section1','zahl1','nicht gefunden');

MyIniFile.Free;
end;
nun kommt der Code:
Delphi-Quellcode:
// wenn die ini Datei nicht da, kein Problem
// wenn die ini Datei da ist, aber kein Integer und unkonvertierbar zu Integer dann error
if StrToInt(s2) - strToInt(S1) > 10 then // kommt eine Fehlermeldung
Wie kann ich folgendes machen:
Wenn der Inhalt von zahl1 kein Integer und nicht möglich in Integer zu konvertieren
dann soll s1 :='0' ?

Beispiel : 10000x ist z.B. ein String und kann man nicht in Integer konvertieren

Ich möchte s1 auch initialisieren, wenn es nicht in Integer konvertierbar ist !!!

silver-moon-2000 6. Mai 2008 22:27

Re: StrToInt Erorror vermeiden !
 
Zitat:

Zitat von Delphiturbo
Wie kann ich folgendes machen:
Wenn der Inhalt von zahl1 kein Integer und nicht möglich zu Integer zu konvertieren
dann soll s1 :='0' ?

Delphi-Quellcode:
StrToIntDef(s1, 0);

mkinzler 6. Mai 2008 22:30

Re: StrToInt Erorror vermeiden !
 
Oder
Delphi-Quellcode:
if not TryStrToInt( zahl1, s1) then s1 := 0;

Delphiturbo 6. Mai 2008 22:42

Re: StrToInt Erorror vermeiden !
 
Zitat:

Zitat von mkinzler
Oder
Delphi-Quellcode:
if not TryStrToInt( zahl1, s1) then s1 := 0;

Wo gemau kann ich diese einsetzen ?
Delphi findet nicht zahl1!

mkinzler 6. Mai 2008 22:43

Re: StrToInt Erorror vermeiden !
 
Einfach statt StrToInt() verwenden
Zitat:

Delphi findet nicht zahl1!
Zitat:

Wenn der Inhalt von zahl1 kein Integer
Ging davon aus das du einen String zahl1 hast

Delphiturbo 6. Mai 2008 22:50

Re: StrToInt Erorror vermeiden !
 
Zitat:

Zitat von mkinzler
Einfach statt StrToInt() verwenden

Dort darf man nicht !!!

Ich habe versucht so :
Delphi-Quellcode:
begin
if Not FileExists('MyIniFile.ini') then
S4:='0'; // initialisieren
if not TryStrToInt(S1) then s1 := '0'; //Not enough parameters

Muetze1 6. Mai 2008 22:53

Re: StrToInt Erorror vermeiden !
 
Mit anderen Worten: Du hast entweder Aufrufparameter zuviel oder zu wenig. Was sagt denn deine Delphi Hilfe dazu?

mkinzler 6. Mai 2008 22:55

Re: StrToInt Erorror vermeiden !
 
Oder mein Beispiel betrachtet, dort werden auch 2 Parameter verwendet!

silver-moon-2000 6. Mai 2008 22:56

Re: StrToInt Erorror vermeiden !
 
Zitat:

Zitat von Delphiturbo
Zitat:

Zitat von mkinzler
Oder
Delphi-Quellcode:
if not TryStrToInt( zahl1, s1) then s1 := 0;

Wo gemau kann ich diese einsetzen ?
Delphi findet nicht zahl1!

In diesem Fall ist 'zahl1' die variable 's1' der String, den Du aus der Ini Datei ausliest
Zitat:

Zitat von Delphiturbo
Delphi-Quellcode:
s1 := MyIniFile.ReadString('Section1','zahl1','nicht gefunden');

müsste also in etwa so heißen (mkinzler: ich vergreif' mich einfach mal an Deinem Code):
Delphi-Quellcode:
var iS1 : integer;

[...]

if not TryStrToInt( zahl1, iS1) then iS1 := 0;
if StrToInt(s2) - iS1 > 10 then

[OT]
Ich weiß, es ist ungehörig, in einem Fred olötzlich ein anderes Thema oder ein zweites Problem anzuschneiden, aber mein "problem" ist es mir nicht wert, einen Fred dafür aufzumachen

Auf der Suche danach, einen möglichst "komplizierte" Lösung zu finden, bin ich auf Folgendes gestoßen
Delphi-Quellcode:
var s1 : string;
    temp :integer;
begin
  s1 := '10n00';
  edAusgabe.Text := IntToStr(IfThen(TryStrToInt(s1, temp), StrToInt(s1), 0));
Da bekomme ich allerdings, falls s1 keine Zahl darstellt, die Fehlermeldung

EConvertError with message ''10n00' is not a valid integer value'.

Kann mir das jemand vielleicht erklären, falls es nicht zu enervierend ist?
[/OT]

mkinzler 6. Mai 2008 23:01

Re: StrToInt Erorror vermeiden !
 
Da ja das StrToInt() ein Parameter ist, wird die Funktion ja auf jedenfall ausgeführt. IfThen() entscheidet ja nur welchen Parameter als Rückgabewert genommen wird.


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