Einzelnen Beitrag anzeigen

Kurt Wallander

Registriert seit: 11. Mai 2020
Ort: Freiberg
35 Beiträge
 
Delphi 10.4 Sydney
 
#9

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 11:07
Irgendeine Teufelei steckt doch noch dahinter. Kaum hatte ich verkündet, daß der ThousandSeparator im Beispielprogramm funktioniert, habe ich das in meinen eigentlichen Programm umgesetzt und folgende Überrachung erlebt:
Code:
procedure TForm1.Plop(Sender: TObject);
var
   dummy            : Extended;
   AFormatSettings  : TFormatSettings;
begin
   if Tageszahl=JuDay then
   begin
      Label24.Caption:='1. 1. 4713 v. Chr. (jul. Kal.)  ';
      JD:=To_JD(Sekunde,Minute,Stunde,Tag,Monat,Jahr,KalTyp);
      AFormatSettings.Create;
      try
         AFormatSettings.ThousandSeparator:=' ';
         Edit1.Text:=[COLOR="red"][U]Format[[/U]/COLOR]('JD = %.6n',[JD, AFormatSettings]);
      except
         on E:Exception do
         begin
            ShowMessage(E.ClassName+ ': '+ E.Message);
         end;
      end;
   end
   else if Tageszahl=MJuDay then
   begin
      Dummy:=JD-0.5;
JD ist die Extended-Variable und hat einen Wert von mehr als 2400000. Die Prozedur Plop wird vom Timer im 10-Sekunden-Takt aufgerufen.
Der Compiler hat was gegen den Formatbefehl: es existiere keine overload-Variante, die mit den angegebenen Parametern aufgerufen werden könne. Auskommentieren von "AFormatSettings" besänftigt den Compiler, aber ich habe dann natürlich wider die Punkte als 1000erTrennzeichen. (Für Purititianer: die angedeutete Abfrage mit den geschachtelten "else if" ließe sich mit einer case-Anweisung sicherlich eleganter lösen.)
Wo liegt der Hase im Pfeffer?
Kurt
  Mit Zitat antworten Zitat