![]() |
Hallo Dietmar
Ich habe grade in einer Alten Version nachgesehen (delphi4), dort ist der Decimalseparator in der Hilfe vorhanden, in der aktuellen dagegen nicht aber trotzdem weiss ich nicht weiter. Gruss Bernd |
Hallo Bernd!
Ist doch ganz einfach:
Code:
Damit sichest Du den alten Wert in DsSich, setzt einen neuen Wert ('.') ein und speicherst nach Deinem Code den gesicherten Wert wieder zurück (Merke: immer hinterher aufräumen, sonst stolpern andere über Deinem Müll!)
var
DsSich : char; begin DsSich := SysUtils.DecimalSeparator; SysUtils.DecimalSeparator := '.'; // dein Code zur Umwandlung SysUtils.DecimalSeparator := DsSich; end; Gruß Dietmar Brüggendiek |
@Berbog: schau, genau das meinte ich. Wenn das aber nicht in der DLL Dokumentation drinnen stand, dann würde ich die DLL auch nciht weiter verwenden, vermutlich ist sie dann unsauber programmiert.
klappts jetzt eigtl. mit dem DecimalSeparator? |
Hallo
Ich Möchte euch allen danken Die Idee mit dem Decimalseparator war goldrichtig hier mein Code analog1:=strAlloc(20); decimalseparator:='.'; label11.Caption:= 'rückgabe TextToFloat '+ inttostr(typ); label3.caption := 'Fehler ' + inttostr ((ND_Readchanai(1,1,0,analog1)));// Dll Funktion analog1 wird ausgelesen und ergebnis angezeigt label4.caption := 'Messwert' +(analog1); //wird richtig als +0029 ausgegeben label5.Caption := 'Stringlänge ' + inttostr (strlen(analog1)); label6.caption := 'Neuer Wert ' +(floattostr(strtofloat(analog1))); series1.Addy((strtofloat(analog1))); Allerdings muss ich den Decimalseparator noch zurücksetzen Gruss Bernd :D |
Moin Dietmar,
grundsätzlich ist es eine sehr gute Idee aufzuräumen, nachdem man etwas verändert hat. DecimalSeparator gehört allerdings zu den Dingen, bei denen es nicht zwingend notwendig ist, falls nicht gerade mehrere Personen an dem Projekt arbeiten, oder arbeiten könnten. Dadurch werden ja keine Systemeinstellungen verändert, sondern nur eine SysUtils interne Variable geändert. |
Hallo Christian!
Natürlich werden bei DecimalSeparator keine Systemeinstellungen verändert, aber: Wenn man nicht daran denkt, zeigen andere Programmteile dann ein merkwürdiges Verhalten. Vielleicht benötigt der Programmierer an anderer Stelle ja den voreingestellten Wert - und eine Veränderung wirkt sich für den Rest des Programmlaufs aus! Nicht aufzuräumen führt dazu, daß andere Programmteile je nach Programmablauf unterschiedlich reagieren. Ausnahme: Die Einstellung wird im "initialization"-Abschnitt einer Unit durchgeführt und nicht von einer anderen überschrieben. Im Übrigen sollte man vielleicht noch ein Wenig Ressourcenschutz hinzufügen:
Code:
Dann wird auch bei einem Fehler noch aufgeräumt.
// Einstellungen vornehmen
try // Arbeiten finally // aufräumen end; Das ist besonders wichtig, wenn die Prozedur von irgendwo aufgerufen wird und dort mit TRY Fehler abgefangen werden (Merke: einmal TRY, immer TRY), da auch mehrfach verschachtelte Programmaufrufe bei Abbruch-Fehlern aller Art zum letzten geöffneten TRY zurückkehren und dort EXCEPT bzw. FINALLY ausführen. EXCEPT ist besonders eklig, weil dann ein Fehler bei IntToStr möglicherweise als "Dateifehler" angezeigt wird und die Ursache schwer zu finden ist. Gruß Dietmar Brüggendiek |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:44 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 by Thomas Breitkreuz