Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Fragen zum typ Float und ini.WriteFloat (https://www.delphipraxis.net/18489-fragen-zum-typ-float-und-ini-writefloat.html)

Cathleen 19. Mär 2004 13:44


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

Mario 19. Mär 2004 13:50

Re: Fragen zum typ Float und ini.WriteFloat
 
Wandle den Wert doch in einen String und schreibe diesen dann.

Luckie 19. Mär 2004 13:51

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.

Cathleen 19. Mär 2004 14:29

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:
//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;
Danke

Mario 19. Mär 2004 14:35

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?

Cathleen 19. Mär 2004 14:40

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:
Var
i:Float;
begin
...
wenn das funzt, habe ich eigentlich kein Problem mehr.

glkgereon 19. Mär 2004 14:48

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!

Mario 19. Mär 2004 14:51

Re: Fragen zum typ Float und ini.WriteFloat
 
Float steht nur für Fließkommazahl, die gibt es aber als Real, Single, Double, ...

Cathleen 19. Mär 2004 14:57

Re: Fragen zum typ Float und ini.WriteFloat
 
Meinst du das so?

Delphi-Quellcode:
var ini: TIniFile;
    iniFilePath : string;
    Registry: TRegistry;
    i:real;
begin
   edit.Text:=FloatToStr(i);

...
So funktioniert das aber auch nicht?

Mario 19. Mär 2004 15:00

Re: Fragen zum typ Float und ini.WriteFloat
 
Was ist daran nicht richtig?

Cathleen 19. Mär 2004 15:00

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?

Mario 19. Mär 2004 15:01

Re: Fragen zum typ Float und ini.WriteFloat
 
Nein, als Real oder Double. Es gibt den Typ Float nicht.

Cathleen 19. Mär 2004 15:09

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:
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;
Hat vielleicht noch jemand einen Vorschlag?

Mario 19. Mär 2004 15:11

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.

Cathleen 19. Mär 2004 15:48

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:
procedur InDBlesen();
SetTableFieldValue('i',Edit.Text);
In der Datenbank kommt der Wert als Kommazahl an und wird auch so wieder aus der Datenbank ausgelesen.
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?

Luckie 19. Mär 2004 16:02

Re: Fragen zum typ Float und ini.WriteFloat
 
Such deine Ini mal auf der Festplatte.
Delphi-Quellcode:
Registry := TRegistry.Create;
Wharscheinlich kuckst du immer noch in der alten. Dein Code sollte gehen, rein semantisch. Rein logisch ist er Blödsinn:
Delphi-Quellcode:
edit1.Text:=FloatToStr(i);
Wie soll hier der Wert von dem Edit in i abgelegt werden, wenn du dem Edit den Wert von i zuweist? :roll:

Wer weis, wo die gelandet ist. :gruebel:

cyberkiller0072001 19. Mär 2004 16:23

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:
ini.writestring(Section,Key,edit1.text);
wenn du einen str in eine real formatieren willst, dann:

Delphi-Quellcode:
var i: real;
...
i:=strtofloat(edit1.tzext);
:warn:

neolithos 19. Mär 2004 17:22

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)

r_kerber 19. Mär 2004 18:27

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.

Mario 22. Mär 2004 06:44

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