StrToFloat Routine nicht Thread-sicher



  • Hi,

    Laut der BDS2006 Hilfe ist die erste Form der StrToFloat Routine nicht Thread sicher. Könnt Ihr mir sagen, was das zu bedeuten hat.

    Ich bin derzeit auf der Suche, warum mein Thread plötzlich beendet wird, obwohl er nicht vollständig ausgeführt ist. Innerhalb des Threads läut eine Schleife, in der ich GPIB Kommandos an Messgeräte schicke. Die rückgelesenen Werte wandle ich mit StrToFloat. Den "Thread-Absturz" kann ich nicht auf eine Code-Zeile beschränken, da das Programm oft ohne Probleme funktioniert, dann wieder nicht. Die einzige Idee, die ich derzeit habe ist, dass es durch StrToFloat verursacht wird.

    LG

    Petsche



  • Hallo,

    Wenn du denkst, dass es daran liegen könnte verwende doch einfach die zweite Form und schau nach ob dein Thread immer noch beendet wird.



  • Das Problem an der Sache ist, das ich mit der Routine GetLocaleFormatSettings die Format Settings auslese und dann das Kommazeichen ein Beistrich ist. Die Ergebnisse der Messgeräte haben jedoch einen Punkt als Kommazeichen. Ich müsste daher am Code sehr viel umändern und daher wollte ich zuerst wissen, ob dies überhaupt der Grund für das Problem sein kann.



  • Wenn du doch mit GetLocaleFormatSettings die Werte ausliest, dann verwendest du ja die (in der Hilfe als) 2. Form beschriebene Variante, d.h. diese Methode ist dann thread-sicher. Die erste Form wird als nicht-thread-sicher eingestuft, da dabei die globale Variable 'DecimalSeparator' verwendet wird (und diese ja dann von einem anderen Thread verändert werden könnte).
    Aber ich nehme mal an, daß du das Trennzeichen zu Beginn deines Programms änderst, bevor du die Threads startest.

    Also wird es wohl eine andere Ursache für den Absturz geben...


Anmelden zum Antworten