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