![]() |
AW: StrToInt langsam in D 10.4
Du hast irgendwo in der Umgebung einen Breakpoint gesetzt. Lösche mal alle und versuch‘s noch mal.
|
AW: StrToInt langsam in D 10.4
Vor allem Breakpoints mit Bedingung verlangsamen den Prozess extrem.
|
AW: StrToInt langsam in D 10.4
Hallo,
was passiert, wenn du das Programm im Debugmodus ohne IDE startest? |
AW: StrToInt langsam in D 10.4
Zitat:
|
AW: StrToInt langsam in D 10.4
Ich tippe aber doch auf die Exceptions, denn die werden bei StrToIntDef erst gar nicht geworfen. Vermutlich sind die EConvertError Exceptions in der IDE ausgeblendet, sonst würden die ja auffallen.
|
AW: StrToInt langsam in D 10.4
Hallo,
@hoika: Debug-Modus ohne IDE kenne ich nicht.... Ich debugge immer von der IDE aus. @Uwe Raabe: Ich bin natürlich inzwischen schon wieder ganz woanders... Kann mich nicht erinnern, was genau gestellt war. Ich denke, ich hatte keine Breakpoints und keine Variablen bei diesem Test. Was ich sicher weiß: gleiche Voraussetzungen, einfach StrToInt durch StrToIntDef ersetzt, und es war schneller. Im Übrigen hatte ich auch mit StrToIntDef die gleichen Exceptions! Weil der Code war so: try i:=StrToInt(Text); except i:=MeinFehlerCode; end; (dauert 1:21 min) bzw. neu try i:=StrToIntDef(Text,-1); if i<0 then abort; except i:=MeinFehlerCode; end; (dauert 3 sek) Das ist nur vereinfacht, zwischen try...except steht noch mehr, was einen Fehler werfen kann. Und die Fehlercodes werden entsprechend gesetzt. Also es gibt keine zuverlässige Ursache? Soll mir jetzt recht sein. Es reicht mir, wenn das Endprodukt sich "normal" verhält. |
AW: StrToInt langsam in D 10.4
Ein Abort erzeugt zwar auch eine Exception, die aber im weiteren Verlauf ignoriert wird und somit in der IDE nicht aufpoppt. Insofern kann man diesen Code
Delphi-Quellcode:
auch einfach so schreiben
try
i:=StrToIntDef(Text,-1); if i<0 then abort; except i:=MeinFehlerCode; end;
Delphi-Quellcode:
i:=StrToIntDef(Text, MeinFehlerCode); |
AW: StrToInt langsam in D 10.4
Uwe,
das ist mir schon klar, aber in diesem Zusammenhang nicht machbar. Wie ich schon geschrieben hatte, passiert zwischen Try und except noch einiges andere, was Fehler verursachen könnte, und zwischen Except und End werden die einheitlich behandelt. Und Dein Vorschlag geht schon deswegen nicht, weil die Fehlercodes sind Zahlen von 0 bis X, anhand derer ich den Fehlerort bestimme für die Weiterbehandlung, z.B. eine gezielte Fehlermeldung. Ein solcher Code kann aber auch ein gültiges Ergebnis von StrToIntDef sein. Nix für ungut... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 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