Zeos und Decimal
Zeos und Decimal
Moin, moin,
ich lese wie folgt in ein DBGrid ein:
ZEOS: ZQuery1.SQL.Add('SELECT * FROM test.preise');
Ich bekomme für den Decimalwert(9.50) 950 und mit Format('0,00') 950,00
ShowMessage(FormatCurr('0.00', ZQuery1.FieldByName('PREIS').AsCurrency)); zeigt 950 an!
benutze ich die Lazarus-Komponenten:
LAZARUS: SQLQuery1.SQL.Add('SELECT * FROM test.preise');
Bekomme ich für den Decimalwert(9.50) 9,5. OK!
Nutze ich PGAdmin zeigt mir der Admin 9.5 an. OK!
So langsam fange ich an an Zeos zu zweifeln. VarChar-Werte über 2048 lösen einen Fehler aus, den Dezimalwerten wird der DecimalSeparator entfernt und das Ganze als Ganzzahl geliefert. Aus 9.50 wird 950!
Sind die Lazaruseigenen Komponenten sicher? Sollte ich umstellen und Zeos vergessen?
Gruß
Baba.
ich lese wie folgt in ein DBGrid ein:
ZEOS: ZQuery1.SQL.Add('SELECT * FROM test.preise');
Ich bekomme für den Decimalwert(9.50) 950 und mit Format('0,00') 950,00
ShowMessage(FormatCurr('0.00', ZQuery1.FieldByName('PREIS').AsCurrency)); zeigt 950 an!
benutze ich die Lazarus-Komponenten:
LAZARUS: SQLQuery1.SQL.Add('SELECT * FROM test.preise');
Bekomme ich für den Decimalwert(9.50) 9,5. OK!
Nutze ich PGAdmin zeigt mir der Admin 9.5 an. OK!
So langsam fange ich an an Zeos zu zweifeln. VarChar-Werte über 2048 lösen einen Fehler aus, den Dezimalwerten wird der DecimalSeparator entfernt und das Ganze als Ganzzahl geliefert. Aus 9.50 wird 950!
Sind die Lazaruseigenen Komponenten sicher? Sollte ich umstellen und Zeos vergessen?
Gruß
Baba.
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Zeos und Decimal
Der Decimalseparator taucht doch regelmäßig hier auf. Der wird aber Ländereinstellungeunabhängig gespeichert, wodurch meistens die Probleme auftauchen.
http://www.lazarusforum.de/viewtopic.ph ... tor#p33309" onclick="window.open(this.href);return false;
Hast du den vorher mal von ',' auf '.' gestellt?
http://www.lazarusforum.de/viewtopic.ph ... tor#p33309" onclick="window.open(this.href);return false;
Hast du den vorher mal von ',' auf '.' gestellt?
Johannes
Re: Zeos und Decimal
Hallo,
es handelt sich um einen Bug. Auf der Zeos-Seite habe ich mit einem der Entwickler (Mark) und einem weiteren User das Problem lösen können. Hierzu hat Mak eine geänderte Funktion gepostet:
Da ich erstmal auf die LazComps umgestellt habe, ich muß mein Programm bis morgen fertig haben, habe ich es noch nicht getestet. Aber Wild_Pointer, der dritte im Bunde, schreibt, dass es damit funktioniert.
Hier der Link zum Forum: http://zeos.firmos.at/viewtopic.php?t=2643" onclick="window.open(this.href);return false;
es handelt sich um einen Bug. Auf der Zeos-Seite habe ich mit einem der Entwickler (Mark) und einem weiteren User das Problem lösen können. Hierzu hat Mak eine geänderte Funktion gepostet:
Code: Alles auswählen
function SQLStrToFloatDef(Str: string; Def: Extended): Extended;
var
{$IFDEF DELPHI12_UP}
OldDecimalSeparator: WideChar;
OldThousandSeparator: WideChar;
{$ELSE}
OldDecimalSeparator: Char;
OldThousandSeparator: Char;
{$ENDIF}
begin
OldDecimalSeparator := DecimalSeparator;
OldThousandSeparator := ThousandSeparator;
DecimalSeparator := '.';
ThousandSeparator := ',';
if Pos('$', Str) = 1 then
Str := Copy(Str, 2, Pred(Length(Str)));
If Str = '' then
Result := Def
else
Result := StrToFloatDef(Str, Def);
DecimalSeparator := OldDecimalSeparator;
ThousandSeparator := OldThousandSeparator;
end;
Hier der Link zum Forum: http://zeos.firmos.at/viewtopic.php?t=2643" onclick="window.open(this.href);return false;
-
- Beiträge: 205
- Registriert: So 2. Dez 2007, 20:47
- OS, Lazarus, FPC: Windows XP Lazarus immer neueste Version
- CPU-Target: xxBit
- Wohnort: Schweiz
Re: Zeos und Decimal
Mit FPC 2.3.1 geht es bei mir mit Zeos. Der Fehler hatte ich nur mit FPC 2.2.4
Peter
Peter
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Re: Zeos und Decimal
Danke, gut zu wissen, da gibt es ja mit der 2.4.0 keine Probleme mehr. 

Johannes
-
- Beiträge: 9
- Registriert: Sa 31. Mai 2008, 19:37
- OS, Lazarus, FPC: WinVista - Laz 0.9.26-2 - FPC 2.2.2
- CPU-Target: 32Bit
- Wohnort: Wehrheim / Taunus
- Kontaktdaten:
Re: Zeos und Decimal
Hallo allerseits,
könnt ihr mir bestägien, dass das Problem mit dem von baba genannten Fix von Mark Daems in Verbindung mit FPC 2.3.1 behoben ist? Wenn ja, dann werden wir den Fix ins nächst Maintenance-Release der ZeosLib (6.6.7) aufnehmen.
Danke & Grüße!
könnt ihr mir bestägien, dass das Problem mit dem von baba genannten Fix von Mark Daems in Verbindung mit FPC 2.3.1 behoben ist? Wenn ja, dann werden wir den Fix ins nächst Maintenance-Release der ZeosLib (6.6.7) aufnehmen.
Danke & Grüße!
Keep On Coding!
Michael.
Und denkt daran: Es wird überall nur mit Wasser gekocht ...
Michael.
Und denkt daran: Es wird überall nur mit Wasser gekocht ...
Re: Zeos und Decimal
Hallo,Domo Sokrat hat geschrieben:Hallo allerseits,
könnt ihr mir bestägien, dass das Problem mit dem von baba genannten Fix von Mark Daems in Verbindung mit FPC 2.3.1 behoben ist? Wenn ja, dann werden wir den Fix ins nächst Maintenance-Release der ZeosLib (6.6.7) aufnehmen.
Danke & Grüße!
ich nutze mit dem Patch - Zeos 6.6 - ohne Fehler!
Meine Lazarus-Version:
Lazarus 0.9.28.2 r22279 FPC 2.2.4 i386-win32-win32/win64
Baba.
Mark schrieb:
In my fpc version (2.5.1) and version 2.3.1 this seems fixed, in 2.2.2 it wasn't yet. Don't know about 2.2.4.
Re: Zeos und Decimal
Hallo zusammen!
Der Beitrag ist zwar schon "etwas" älter aber für mich sehr aktuell. Hatte bis vor kurzem immer folgende Konfiguration verwendet:
Lazarus SVN trunk
Mysql 5.0.45
Fpc 2.4
Zeos 6.6.6
und konnte auf einmal exakt das selbe Phänomen wie baba es beschrieben hat beobachten. Da ich diesen Beitrag erst zuspät gefunden habe und mir dachte, dass ich wahrscheinlich nur ein Osterei erwischt habe habe ich es mit der "stable" Version probiert:
Lazarus 0.9.28.2 r22279 FPC 2.2.4
(rest s.o)
mit dem selben Ergebniss! Format,FormatDisplay,DecimalSeperator etc. haben zu keinem brauchbaren Ergebniss geführt. Erst durch Änderung der DB-feldtypen von DECIMAL(10,2) zu FLOAT hatte sich das Problem behoben und Fliesskommazahlen wurden korrekt dargestellt. Der Fehler scheint auch bei DOUBLE(m,n) etc. aufzutauchen. Hat vielleicht jemand das selbe Problem mit DECIMAL() und evtl auch lösen können? Danke für evtl. Antworten.
Der Beitrag ist zwar schon "etwas" älter aber für mich sehr aktuell. Hatte bis vor kurzem immer folgende Konfiguration verwendet:
Lazarus SVN trunk
Mysql 5.0.45
Fpc 2.4
Zeos 6.6.6
und konnte auf einmal exakt das selbe Phänomen wie baba es beschrieben hat beobachten. Da ich diesen Beitrag erst zuspät gefunden habe und mir dachte, dass ich wahrscheinlich nur ein Osterei erwischt habe habe ich es mit der "stable" Version probiert:
Lazarus 0.9.28.2 r22279 FPC 2.2.4
(rest s.o)
mit dem selben Ergebniss! Format,FormatDisplay,DecimalSeperator etc. haben zu keinem brauchbaren Ergebniss geführt. Erst durch Änderung der DB-feldtypen von DECIMAL(10,2) zu FLOAT hatte sich das Problem behoben und Fliesskommazahlen wurden korrekt dargestellt. Der Fehler scheint auch bei DOUBLE(m,n) etc. aufzutauchen. Hat vielleicht jemand das selbe Problem mit DECIMAL() und evtl auch lösen können? Danke für evtl. Antworten.