![]() |
Fragen zum typ Float und ini.WriteFloat
Hallo,
In einem Textfeld wird ein Currency Wert gespeichert. Diesen Wert möchte ich an eine Ini Datei übergeben, aber in der ini Datei werden die Kommastellen abgeschnitten. Meine Idee war: Denn Wert aus dem Textfelde an eine Variable des Typen Float zu übergeben und dann mit der Funktion ini.WriteFloat an die ini Datei zu übergeben. Funktioniert aber nicht. Hat jemand eine andere bzw. bessere Idee? Danke! Cathleen |
Re: Fragen zum typ Float und ini.WriteFloat
Wandle den Wert doch in einen String und schreibe diesen dann.
|
Re: Fragen zum typ Float und ini.WriteFloat
"Funktioniert aber nicht." Schön. Und weiter? Meine Glaskugel ist gerade in der Heißmangel. :roll:
Ertwas Code wäre auch hilfreich. |
Re: Fragen zum typ Float und ini.WriteFloat
Hier kommt ein stück Code. Es werden bereit Daten in die ini geschrieben, habe den Code nur weggelassen.
Habt ihr eine Idee?
Delphi-Quellcode:
Danke
//edit.text wird ein Currency Wert gespeichert
Var i: Float //? geht das überhaupt begin i:=edit.text; Registry := TRegistry.Create; try Registry.RootKey .... finally .... End; ini.Writefloat('Schlüssel','Schlüssel',i); ini.free; |
Re: Fragen zum typ Float und ini.WriteFloat
Du hast wohl ein wenig viel weggelassen :zwinker: Der Code macht so gar keinen Sinn. Was ist mit meinem Vorschlag?
|
Re: Fragen zum typ Float und ini.WriteFloat
Ich habe ein Problem mit der Variablen dekleration und nicht mit der Ini Datei.
Wie schon gesagt, das übergeben an die Ini funzt. Kann ich eine Variable dem typ Float zuweisen? Also
Delphi-Quellcode:
wenn das funzt, habe ich eigentlich kein Problem mehr.
Var
i:Float; begin ... |
Re: Fragen zum typ Float und ini.WriteFloat
dat ist nicht float (C), sondern real!!!
frag mich nicht, warum es dann floattostr und so heisst, aber der typ is real! |
Re: Fragen zum typ Float und ini.WriteFloat
Float steht nur für Fließkommazahl, die gibt es aber als Real, Single, Double, ...
|
Re: Fragen zum typ Float und ini.WriteFloat
Meinst du das so?
Delphi-Quellcode:
So funktioniert das aber auch nicht?
var ini: TIniFile;
iniFilePath : string; Registry: TRegistry; i:real; begin edit.Text:=FloatToStr(i); ... |
Re: Fragen zum typ Float und ini.WriteFloat
Was ist daran nicht richtig?
|
Re: Fragen zum typ Float und ini.WriteFloat
Ich muss doch die Variable in eine FLoat deklarieren, damit ich den Wert
mit dem ini.Writefloat an die Ini Übergeben kann, oder habe ich da was falsch verstanden? |
Re: Fragen zum typ Float und ini.WriteFloat
Nein, als Real oder Double. Es gibt den Typ Float nicht.
|
Re: Fragen zum typ Float und ini.WriteFloat
Ich habe jetzt meine Variable i als Real deklariert.
In der ini Datei kommen aber keine Gleitkommazahlen an.
Delphi-Quellcode:
Hat vielleicht noch jemand einen Vorschlag?
Var
i:real begin edit1.Text:=FloatToStr(i); // Verzeichnispfad aus der Registry lesen Registry := TRegistry.Create; try Registry.RootKey := HKEY_LOCAL_MACHINE; Registry.OpenKey('SOFTWARE\Verzeichnis', False); iniFilePath := Registry.ReadString('iniDatei'); finally Registry.CloseKey; Registry.Free; End; ini.WriteFloat('Schlüssel','Schlüssel',i); ini.free; |
Re: Fragen zum typ Float und ini.WriteFloat
Hast Du überprüft, ob in i auch wirklich der Komma-Wert drin steht? Warum postest Du immer den Registry Code und lässt den Ini-Code ganz weg?
Das eigentliche Schreiben ist richtig. |
Re: Fragen zum typ Float und ini.WriteFloat
Du hast recht, in i steht garkeine Kommazahl drin.
Also jetzt versteh ich garnichts mehr nicht mehr :gruebel: Das Textfeld edit.text wird in eine Datenbank gespeichert.
Delphi-Quellcode:
In der Datenbank kommt der Wert als Kommazahl an und wird auch so wieder aus der Datenbank ausgelesen.
procedur InDBlesen();
SetTableFieldValue('i',Edit.Text); Und warum schreibt er in meine Ini den Wert ohne Komma. Vielleicht gibt es ja auch ganz andere Möglichkeiten meinen Wert als Gleitkommazahl weiter zu geben. Weiß jemand wie man mit der Funktion FormatFloat umgeht? |
Re: Fragen zum typ Float und ini.WriteFloat
Such deine Ini mal auf der Festplatte.
Delphi-Quellcode:
Wharscheinlich kuckst du immer noch in der alten. Dein Code sollte gehen, rein semantisch. Rein logisch ist er Blödsinn:
Registry := TRegistry.Create;
Delphi-Quellcode:
Wie soll hier der Wert von dem Edit in i abgelegt werden, wenn du dem Edit den Wert von i zuweist? :roll:
edit1.Text:=FloatToStr(i);
Wer weis, wo die gelandet ist. :gruebel: |
Re: Fragen zum typ Float und ini.WriteFloat
Du kannst nicht i unbelegt lassen und dann in ein feld schreiben. Wenn du den inhalt des feldes in der ini speichern willst, musst du schreiben:
Delphi-Quellcode:
wenn du einen str in eine real formatieren willst, dann:
ini.writestring(Section,Key,edit1.text);
Delphi-Quellcode:
:warn:
var i: real;
... i:=strtofloat(edit1.tzext); |
Re: Fragen zum typ Float und ini.WriteFloat
Bitte nicht real verwenden, da das in früheren Version eine andere Bedeutung hatte (real48).
sondern Single (das ist das float aus von dem hier gesprochen wurde) bzw. Double (entspricht übrigens real) |
Re: Fragen zum typ Float und ini.WriteFloat
Moin Cathleen,
kann es sein, dass die Nachkomma-Stellen Nullen sind? Dann wäre das, was in der ini steht korrekt. Aus z.B. 11,00 wird dann eben 11. |
Re: Fragen zum typ Float und ini.WriteFloat
Wenn Du nicht rausbekommst, warum in I der Wert schon ohne Komma ist, wird Dir FormatFloat auch nicht weiterhelfen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:27 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