![]() |
Delphi-Version: 10.3 Rio
Konvertierung Double, Ausgabe davon
Hallo,
warum funktioniert das Folgende nicht wie erwartet? Type TdataPoint=record isRising: Boolean; dateTime: TDatetime; open, high,low,close:Double; end; VAR thisPoint:TdataPoint; tradeOpen; y:String; tradeOpen:='12843.2105'; with thisPoint do Begin TextToFloat(PChar(tradeOpen),open, fvExtended); End; y:= FormatFloat('#0000.0000#;;', open); targetMemo.Lines.Append(tradeOpen+' '+ y); Ausgabe: 12843.2105 0000,0000 erwünscht: 12843.2105 12843.2105 Es ist, als ob kein Wert in thisPoint.open ist bzw er wird nicht richtig konvertiert. Eure Hilfe wird sehr geschätzt. Danke |
AW: Konvertierung Double, Ausgabe davon
Weil es bestimmt unterschiedliche Variablen sind und da nunmal auch unerschiedliche Inhalte drin sind?
Und sehe auch keinen Grund, warum man sich hier unbedingt mit einem nutzlosen WITH das Leben unnötig schwer machen sollten. Zitat:
|
AW: Konvertierung Double, Ausgabe davon
Das ganze ist ein Auszug. Im vollständigen Programm steht mehr im 'with do'. Ich gehe davo aus das 'TextToFloat(PChar(tradeOpen),open, fvExtended);' den umgewandelten Wert von tradeOpen in open schreibt.
|
AW: Konvertierung Double, Ausgabe davon
Zitat:
Tipp: ![]() da steht was von Rückgabewert. den würde ich als erstes mal auswerten. Und das with weg lassen... [Edit] Und vielleicht auch mal versuchen anstelle tradeOpen:='12843.2105'; das hier zu machen tradeOpen:='12843,2105'; |
AW: Konvertierung Double, Ausgabe davon
Danke Lemmy für Deinen Beitrag,
hier kurz OT bei: Lotto stehen die Chance ca 120-140 Millionen zu 1 gegen Dich, das Du (Haupt-)gewinnst, ich hingegen hoffte auf eine gute Chance weil ich natürlich die Hilfe für TextToFloat benutzt habe. Der Rückgabewert der Funktion TextToFloat ist einmal Boolean. Daher kann ich folgendes machen: if 'TextToFloat(PChar(tradeOpen),open, fvExtended) then ... Und zum anderen einen Variable-Parameter, indem der Kode der Funktion einen Rückgabewert schreiben kann/sollte. Das "with" hatt keinen Einfluß aber ich habe auf Deine Anregung hin noch einmal probiert: thisPoint.open aber das funktioniert auch nicht besser. Auch der Austausch des Punktes gegen ein Komma hilft nicht(ich habe es probiert), denn der Formatierungsstring y:= FormatFloat('#0000.0000#;;', thisPoint.open); kann damit umgehen, hier der gekürzte Text der Hilfe dazu: "Das erste '.'-Zeichen im Format-String bestimmt die Position des Dezimalzeichens im formatierten Wert. Das tatsächlich im Ausgabe-String verwendete Zeichen wird mit der globalen Variable DecimalSeparator bzw. ihrer TFormatSettings-Entsprechung festgelegt. Ich brauche also immer noch Hilfe, irgendwas mache ich grundlegend falsch. Rolf |
AW: Konvertierung Double, Ausgabe davon
hallo,
wenn man die function so aufruft TextToFloat(PChar(tradeOpen),open, fvExtended); muss open vom Typ Extended sein. (so verstehe jedenfalls die Online Hilfe). so habe ich es mal getestet.
Delphi-Quellcode:
gruß
var open:Extended;
tradeOpen, y:String; ff:TFormatSettings; ergebnis:string; begin ff:=TFormatSettings.Create; tradeOpen:='12843.2105'; System.sysutils.TextToFloat(PChar(tradeOpen),open,fvExtended,ff.Invariant); ff.DecimalSeparator:='.'; y:= FormatFloat('#0000.0000#;;', open,ff); ergebnis:=tradeOpen+ ' '+y; Caption:=ergebnis; end; |
AW: Konvertierung Double, Ausgabe davon
Danke, super MMV!
das hatt mir sehr weitergeholfen, es funktioniert so. Ich glaube aber das wesendliche Deiner Anwort war das ganze KnowHow mit TFormatSettings.Create,etc. Ich habe das dann als Herausforderung gesehen und es noch mal mit Double ausprobiert. Wenn man function TextToFloat(const S: string; var Value: Double; const AFormatSettings: TFormatSettings als Vorlage benutzt geht es auch mit Double. Das ist für mich vorteilhaft, da das Ganze in einer Schleife dann wesendlich schneller läuft. Nochmals, Du hast mein Wochenende gerettet! Rolf |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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