Problem mit Delphi 7 - FloatToStrF kaputt?

Hi allerseits,
Ich hab seit einiger Zeit das Problem mit Delphi 7, dass die FloatToStrF Funktion nichtmehr funktioniert, ich kann sie zwar verwenden, aber sie arbeitet nicht, d.h. die nachkommastellen sind immernoch da (die Funktion hat garnichts bewirkt).
Kennt jemand von euch das Problem bzw. weiss eine Lösung dafür?

Lg

Hallo,

welche der überladenen Versionen von FloatToStrF benutzt Du? Welche Parameter verwendest Du?

Poste mal Deinen Aufruf.

Gruß, Niels

Hi, Sry, dass ich erst jetzt antworte.

Hier mein Aufruf:

LUmfang.Caption:=FloatToStrF(RechteckUmfang(rE1, rE2, rUmfang, rFlaeche),ffgeneral, 7, 2);

Hab auch schon ein paar Parameteränderungen versucht - leider ohne Erfolg.

Ich benutze die normale überladene Version von delphi 7 (oder versteh ich dich jetzt falsch?)

lg

1 Like

Hallo,

Hier mein Aufruf:

LUmfang.Caption:=FloatToStrF(RechteckUmfang(rE1, rE2, rUmfang,
rFlaeche),ffgeneral, 7, 2);

Hab auch schon ein paar Parameteränderungen versucht - leider
ohne Erfolg.

es wäre auch durchaus sinnvoll, mitzuteilen, was die Funktion denn überhaupt leisten soll. „…leider ohne Erfolg, denn ich rufe die Funktion zum Beispiel so … auf und dann stimmt das von mir erwartete Ergebnis … nicht mit dem tatsächlichen, nämlich … überein.“ Mit dieser Information kann Deine Frage wahrscheinlich in zwei Minuten beantwortet werden.

Gruß
Martin

Hallo,

mein Vorschlag: benutze die Funktion Format.

Überladen heißt, dass es mehrere Versionen einer Funktion gibt, die unterschiedliche Parameter haben. Deklariert werden solche Funktionen mit dem Zusatz overload.

Gruß, Niels

„…leider ohne Erfolg, denn ich
rufe die Funktion zum Beispiel so … auf und dann stimmt
das von mir erwartete Ergebnis … nicht mit dem
tatsächlichen, nämlich … überein.“

„… Aufruf der Funktion FloatToStrF…leider ohne Erfolg, denn ich rufe die Funktion zum Beispiel so …(siehe oben)… auf und dann stimmt das von mir erwartete Ergebnis …die kürzung der Nachkommastellen… nicht mit dem tatsächlichen, nämlich …dem normalen Ergebnis(ohne Auswirkungen, d.h. alle nachkommastellen sind noch da)… überein.“

1 Like

Ich würde einfach ein Memo auf ein leeres Formular setzen und ins OnCreate-Event des Formulars diesen kleinen Testcode setzen:

PROCEDURE TFormMain.FormCreate (Sender: TObject);

VAR
 p: INTEGER; // Precision
 d: INTEGER; // Digits

begin
 Memo1.Lines.Add('ffGeneral -------------------------------');

 FOR p := 0 TO 5 DO
 FOR d := 0 TO 5 DO
 Memo1.Lines.Add(FloatToStrF(pi, ffGeneral, p, d));

 Memo1.Lines.Add('ffExponent -------------------------------');

 FOR p := 0 TO 5 DO
 FOR d := 0 TO 5 DO
 Memo1.Lines.Add(FloatToStrF(pi, ffExponent, p, d));

 Memo1.Lines.Add('ffFixed -------------------------------');

 FOR p := 0 TO 5 DO
 FOR d := 0 TO 5 DO
 Memo1.Lines.Add(FloatToStrF(pi, ffFixed, p, d));

 Memo1.Lines.Add('ffNumber -------------------------------');

 FOR p := 0 TO 5 DO
 FOR d := 0 TO 5 DO
 Memo1.Lines.Add(FloatToStrF(pi, ffNumber, p, d));
end;

Das deckt praktisch alles ab. Durch das Studium der Ausgabe im Memo solltest Du alles über die FloatToStrF-Routine lernen können, was Du wissen willst. Auch, wie sich z. B. alle Nachkommastellen unterdrücken lassen.

Viel Spaß! :smile:

Gruß
Martin