Hallo zusammen,
ich habe gestern die neue Lazarus Version installiert.
Soweit alles super und läuft auch echt schön schnuffig.
Nur leider gibt Zeigt ein DBGrid falsche Zahlen an
z.B.
2059,72 wird zu 79999999989558
bei Zahlen die keine Kommastelle haben geht alles gut
Wenn ich nun das SQL nehme und in der Datenbank direkt ausführe, zeigt er alles richtig an.
hmm
da dachte ich mir gut nutze ich halt Displayformat (#####,##)
joar eigentlich super,
nur zeigt er aber keine nach Kommastellen mehr an
hmm wie bekomme ich denn diesen Fehler raus?
Viele Grüße
DBGrid zeigt falsche Zahlen an
Re: DBGrid zeigt falsche Zahlen an
Wenn das DisplayFormat hier denselben Regeln folgt wie bei FormatFloat, dann ist auf jeden Fall der Dezimaltrenner falsch - das ist im FormatString immer ein Punkt, selbst wenn die Ländereinstellungen ein Komma wollen. Selbst wenn du das behoben hast, wird das immer noch nicht zur Zufriedenheit ausfallen: Das '#' steht für eine Ziffer, die entfällt, wenn sie 0 ist. Das heißt: die Zahl 0 wird als LeerString formatiert. Daher meine ich, dass der richtige FormatString ein '0' direkt for dem Dezimalpunkt enthalten sollte - denn diese Ziffer wird ausgegeben, auch wenn sie 0 ist - und wenn du zwei Dezimalstellen fest haben willst, auch zweimal 0 nach dem Dezimalpunkt, also '0.00'. Wenn die Zahl >= 10 ist, werden die zugehörigen Ziffern trotzdem ausgegeben, auch wenn hier kein Formatzeichen mehr steht.
Code: Alles auswählen
program Project1;
uses
SysUtils;
begin
WriteLn(FormatFloat('######,##', 2059.72)); // --> '2060'
WriteLn(FormatFloat('######.##', 2059.72)); // --> '2059.72'
WriteLn(FormatFloat('0.00', 2059.72)); // --> '2059.72'
WriteLn(FormatFloat('######,##', 0)); // --> ''
WriteLn(FormatFloat('######.##', 0)); // --> ''
WriteLn(FormatFloat('0.00', 0)); // --> '0.00'
WriteLn(FormatFloat('######,##', 0.0001)); // --> ''
WriteLn(FormatFloat('######.##', 0.0001)); // --> ''
WriteLn(FormatFloat('0.00', 0.0001)); // --> '0.00'
ReadLn;
end.