![]() |
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:
nun kommt der Code:
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;
Delphi-Quellcode:
Wie kann ich folgendes machen:
// 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 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 !!! |
Re: StrToInt Erorror vermeiden !
Zitat:
Delphi-Quellcode:
StrToIntDef(s1, 0);
|
Re: StrToInt Erorror vermeiden !
Oder
Delphi-Quellcode:
if not TryStrToInt( zahl1, s1) then s1 := 0;
|
Re: StrToInt Erorror vermeiden !
Zitat:
Delphi findet nicht zahl1! |
Re: StrToInt Erorror vermeiden !
Einfach statt StrToInt() verwenden
Zitat:
Zitat:
|
Re: StrToInt Erorror vermeiden !
Zitat:
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 |
Re: StrToInt Erorror vermeiden !
Mit anderen Worten: Du hast entweder Aufrufparameter zuviel oder zu wenig. Was sagt denn deine Delphi Hilfe dazu?
|
Re: StrToInt Erorror vermeiden !
Oder mein Beispiel betrachtet, dort werden auch 2 Parameter verwendet!
|
Re: StrToInt Erorror vermeiden !
Zitat:
Zitat:
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:
Da bekomme ich allerdings, falls s1 keine Zahl darstellt, die Fehlermeldung
var s1 : string;
temp :integer; begin s1 := '10n00'; edAusgabe.Text := IntToStr(IfThen(TryStrToInt(s1, temp), StrToInt(s1), 0)); EConvertError with message ''10n00' is not a valid integer value'. Kann mir das jemand vielleicht erklären, falls es nicht zu enervierend ist? [/OT] |
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.
|
Re: StrToInt Erorror vermeiden !
Der code ist in ein Button und nicht zusamen in OnCeate
darum kennt Delphi Zahl1 nicht, wenn ich den Teil hier einbaue:
Delphi-Quellcode:
ich kann nicht den Tel oben dazu einfügen
procedure TForm1.Button1Click(Sender: TObject);
begin if Not FileExists('MyIniFile.ini') then S4:='0'; if StrToInt(s2) - strToInt(S1) > 10 then
Delphi-Quellcode:
if not TryStrToInt( zahl1, S1) then S1 := 0;
|
Re: StrToInt Erorror vermeiden !
Zitat:
ich dachte anscheinend wieder mal falsch: IfThen ist "definiert" als:
Delphi-Quellcode:
Ich dachte, dass der Ausdruck, "der in ATrue steht", also IntToStr(s1), nur dann ausgewertet wird, wenn IfThen in den true Zweig springt... wieder was gelernt
function IfThen(AValue: Boolean; const ATrue: Integer; const AFalse: Integer): Integer;
begin if AValue then Result := ATrue else Result := AFalse; end; [/OT] |
Re: StrToInt Erorror vermeiden !
wie kann ich feststellen ob ein Wert kein Integer ist ?
|
Re: StrToInt Erorror vermeiden !
Zitat:
Delphi-Quellcode:
Zahl1 ist der String, der umgewandelt werden soll, s1 die Zahl, die "rauskommt"
if not TryStrToInt( zahl1, s1) then s1 := 0;
Wenn Zahl1 eine gültige zahl darstellt, hat TryStrToInt den RückgabeWert true, andernfalls false -> ergibt TryStrToInt( zahl1, s1) true, ist zahl1 ein gültiger Integer |
Re: StrToInt Erorror vermeiden !
Wenn er es nicht wandeln kann? Siehe
![]() |
Re: StrToInt Erorror vermeiden !
Gelöst so :
Delphi-Quellcode:
:mrgreen:
if StrToInt(S0) - StrToIntDef(S1, 0) > 10 then
|
Re: StrToInt Erorror vermeiden !
Zitat:
Wenn er es wandeln kann, ist's ein Integer, sonst ist es kein Integer. Ich zitiere OH: Zitat:
bezüglich Fred (man beachte die smileys) Das wollte ich schon immer mal sagen: Benutz' doch mal die SuFu :mrgreen: :mrgreen: ![]() [edit] Argh, roter Kasten, where art thou? sind die roten Kästen eigentlich nur für sehr aktive Mitglieder gedacht? :wall: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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