AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Konvertierung Double, Ausgabe davon

Ein Thema von rwb · begonnen am 8. Nov 2020 · letzter Beitrag vom 8. Nov 2020
Antwort Antwort
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#1

Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 07:30
Delphi-Version: 10.3 Rio
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
Das Leben ist Freude
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#2

AW: Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 07:49
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:
Es ist, als ob kein Wert in thisPoint.open ist bzw er wird nicht richtig konvertiert.
Verwendest du überhaupt das thisPoint.open? Sieht nicht so aus.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 8. Nov 2020 um 07:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 08:19
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.
Das Leben ist Freude
  Mit Zitat antworten Zitat
Lemmy

Registriert seit: 8. Jun 2002
Ort: Berglen
2.366 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 09:32
Ich gehe davo aus das 'TextToFloat(PChar(tradeOpen),open, fvExtended);' den umgewandelten Wert von tradeOpen in open schreibt.
Ich gehe auch immer davon aus, dass ich im Lotto gewinne, funktioniert aber halt nicht...

Tipp:
http://docwiki.embarcadero.com/Libra...ls.TextToFloat

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';

Geändert von Lemmy ( 8. Nov 2020 um 10:02 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 12:05
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
Das Leben ist Freude
  Mit Zitat antworten Zitat
mmw

Registriert seit: 10. Sep 2019
Ort: OWL
322 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 12:34
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:
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;
gruß
  Mit Zitat antworten Zitat
Benutzerbild von rwb
rwb

Registriert seit: 28. Nov 2007
Ort: Tarmstedt
42 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Konvertierung Double, Ausgabe davon

  Alt 8. Nov 2020, 13:06
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
Das Leben ist Freude
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:13 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