AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

ThousandSeparator - nur ein Mythos?

Ein Thema von Kurt Wallander · begonnen am 13. Apr 2022 · letzter Beitrag vom 18. Apr 2022
Antwort Antwort
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.779 Beiträge
 
Delphi 12 Athens
 
#1

AW: ThousansSeparator - nur ein Mythos?

  Alt 14. Apr 2022, 22:48
Hallo Uwe,
vielen Dank für deine Anregungen. Habe sie sogleich in mein Programm eingebaut.
Ich war das nicht...
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kurt Wallander

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

AW: ThousansSeparator - nur ein Mythos?

  Alt 15. Apr 2022, 12:24
Danke mmw, es klappt! Wieder was dazugelernt.
  Mit Zitat antworten Zitat
Kurt Wallander

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

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 10: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
TKanne

Registriert seit: 6. Aug 2007
Ort: Berlin
25 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 10:34
Moin,

AFormatSettings.create;
ist falsch, es muss heißen:

AFormatSettings := TFormatSettings.Create;

Gruß
  Mit Zitat antworten Zitat
mmw
(Gast)

n/a Beiträge
 
#5

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 10:46
Hallo,

das Edit1 müsste so sein


Edit1.Text:=[COLOR="red"][U]Format[[/U]/COLOR]('JD = %6.n',[JD], AFormatSettings);

wegen der lesbarkeit

 Edit1.Text:=Format ('JD = %6.n',[JD], AFormatSettings);

Gruß
  Mit Zitat antworten Zitat
Kurt Wallander

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

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 12:03
Hallo TKanne,
es hat leider keine Auswirkung.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.779 Beiträge
 
Delphi 12 Athens
 
#7

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 12:14
Wie schon erwähnt, muss das AFormatSettings hinter die eckige Klammer und nicht darein.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von blawen
blawen

Registriert seit: 30. Nov 2003
Ort: Luterbach (CH)
711 Beiträge
 
Delphi 12 Athens
 
#8

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 12:47
...Programm umgesetzt und folgende Überraschung erlebt..
Der QC ist hoffentlich nicht Teufelei, sondern Logik, die noch fehlerhaft ist.

Was wird hier für ein Edit verwendet, welches so formatiert werden kann?

 Edit1.Text:=[COLOR="red"][U]Format[[/U]/COLOR]('JD = %.6n',[JD, AFormatSettings]);
Roland
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.779 Beiträge
 
Delphi 12 Athens
 
#9

AW: ThousansSeparator - nur ein Mythos?

  Alt 16. Apr 2022, 13:21
Was wird hier für ein Edit verwendet, welches so formatiert werden kann?

 Edit1.Text:=[COLOR="red"][U]Format[[/U]/COLOR]('JD = %.6n',[JD, AFormatSettings]);
Das ist offenbar ein Versuch, die Foren-interne Source-Formatierung mal so eben dynamisch zu erweitern.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Kurt Wallander

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

AW: ThousandSeparator - nur ein Mythos?

  Alt 18. Apr 2022, 19:12
Hallo Freunde,
ich hatte Fett auf der Brille und habe den AFormatSettings-Parameter in die eckige Klammer gesetzt und damit den Format-Fehler provoziert.
Der komplizierte Ausdruck für Edit1.Text war ein Versuch dafür, das das "Format" rot und unterstrichen hier im Forum dargestellt wird. Aber Forum macht das nicht. Im Programmcode ist davon nichts enthalten.
Vielen Dank, das Thema kann als erledigt betrachtet werden.
Kurt
  Mit Zitat antworten Zitat
Antwort Antwort

 
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz