Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Problem mit EConvertError (https://www.delphipraxis.net/111469-problem-mit-econverterror.html)

Socke_SG 3. Apr 2008 23:16


Problem mit EConvertError
 
Hi zusammen,

hab da mal ne Frage zur Konvertierung von strings. Ich habe einen String k, bei dem ich ganz bestimmte Stellen herausnehmen möchte und in einen edit-Text packen will. Das alleine Klappt auch wunderbar. Nur dann versuche ich diesen Text im Edit-Feld in eine Integerzahl zu verwandeln (der Text im Feld sind zahlen) und dann schmeisst der mir immer EConvertError raus mit der Begründung, dass ' ' kein gültiger Integerwert sei. Hier ist die Stelle, die Probleme macht...

edit2.Text:=(k[Length(k)-10]+k[Length(k)-9]+k[length(k)-8]);
edit3.Text:=k[Length(k)-6]+k[Length(k)-5]+k[length(k)-4];
Image3.Visible:=true;
posx:=StrToInt(Edit2.text);

Wäre dankbar für ne schnelle Antwort

Muetze1 3. Apr 2008 23:22

Re: Problem mit EConvertError
 
Naja, ein leerer String bzw. aus Leerzeichen oder auch nur mit Leerzeichen ist nunmal kein Integer und somit ungültig. Somit hat er doch vollkommen Recht, was ist nun das eigentliche Problem bzw. was für eine Lösung stellst du dir vor?

Ansonsten mal ein paar Begriffe für die Hilfe: Delphi-Referenz durchsuchenTrim(), Delphi-Referenz durchsuchenTryStrToInt(), Delphi-Referenz durchsuchenStrToIntDef()

Socke_SG 3. Apr 2008 23:25

Re: Problem mit EConvertError
 
Das Problem ist, das das Edit-Feld, aus dem er konvertieren soll ja nicht leer ist...

edit2.Text:=(k[Length(k)-10]+k[Length(k)-9]+k[length(k)-8]);

Da kommen also die Buchtstaben/Ziffern des Strings k rein...und die zeigt er mir ja auch in dem Feld an. Aber das Konvertieren

posx:=StrToInt(Edit2.text); //wobei posx integer ist

funktioniert nicht... Das Feld ist nun mal nicht leer

Socke_SG 3. Apr 2008 23:31

Re: Problem mit EConvertError
 
Hey klasse mit StrToIntDef klappts!

Vielen Dank!

Muetze1 3. Apr 2008 23:31

Re: Problem mit EConvertError
 
Zitat:

Zitat von Socke_SG
Da kommen also die Buchtstaben/Ziffern des Strings k rein...und die zeigt er mir ja auch in dem Feld an.

Ein Buchstabe ist keine Ziffer und somit nicht konvertierbar.

Zitat:

Zitat von Socke_SG
Das Feld ist nun mal nicht leer

Ein String aus Leerzeichen ist nicht leer, stimmt, aber auch keine Zahl! Was steht definitiv in dem Edit1 drin? Die oben von dir gepostete Fehlermeldung enthält im Normalfall den String, den er konvertieren soll. Das ist oben bei dir definitiv keine Zahl gewesen sondern " " - und das ist eindeutig keine Zahl.

Zitat:

Zitat von Socke_SG
Hey klasse mit StrToIntDef klappts!

Nur bedingt, da er keinen Fehler bringt, wenn er es nicht konvertieren kann: sprich wenn es keine Zahl ist. Statt dessen gibt er den angegebenen Defaut Wert zurück. Damit wird nur der Fehler unterdrückt aber nicht im eigentlichen Sinne beseitigt.

Socke_SG 4. Apr 2008 00:32

Re: Problem mit EConvertError
 
Ok, mag sein. Aber für meine Zwecke reicht es.

Aber im Edit2.Text steht halt z.B. 123 drin wobei die 1 von k[Length(k)-10] kommt usw.

Da sind dann doch keine Leerzeichen

Muetze1 4. Apr 2008 00:41

Re: Problem mit EConvertError
 
Zitat:

Zitat von Socke_SG
Aber im Edit2.Text steht halt z.B. 123 drin wobei die 1 von k[Length(k)-10] kommt usw.

Da sind dann doch keine Leerzeichen

Nein, definitiv nicht, sonst würde ja die Meldung nicht kommen. Ich vermute eher das er durch andere Aufrufe und OnChange Ereignisse in diese Procedure reinkommt obwohl k keinen wirklichen bzw. richtigen Inhalt hat.

Auch würde ich fast eine Zugriffsverletzung vermuten. Hast du die Bereichs- und Überlaufprüfung in deinem Projekt bei den Compiler-Optionen aktiviert? Wenn nein, mach dies mal und erstell das gesamte Projekt neu. Dann würde mich mal interessieren ob es dann nicht sogar ein paar Exceptions mehr gibt und uns andere Fehler aufzeigt.

Und zu meiner Vermutung das er in die o.g. Procedure zu einem anderen Zeitpunkt reinkommt: Schonmal einen Breakpoint in die Methode gesetzt und den Inhalt von Edit2.Text mit dem Debugger betrachtet?


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