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?
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.
Überladen heißt, dass es mehrere Versionen einer Funktion gibt, die unterschiedliche Parameter haben. Deklariert werden solche Funktionen mit dem Zusatz overload.
„…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.“
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.