FormatDateTime auf deutsch ?

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

FormatDateTime auf deutsch ?

Beitrag von pluto »

Hallo,
wenn ich FormatDateTime verwende bekomme ich leider nur Englische Monate und Tage hin.
Aber wie stelle ich es auf deutsch ?
ich habe zwar eine Lösung die es aber nicht gerade gut:

Code: Alles auswählen

const
   LongMonthNames_German: array[1..12] of string[128] =
     ('Januar','Februar','März','April','Mai','Juni',
      'Juli','August','September','Oktober','November','Dezember');
 
   LongDayNames_German: array[1..7] of string[128] =
     ('Sontag','Montag','Dienstag','Mittwoch','Donnertag','Freitag','Samstag');
 
 
procedure TForm1.SpeedButton22Click(Sender: TObject);
var
  m,j,d:Word;
begin
  DecodeDate(Date,j,m,d);
  DateTimeFormat:=LongDayNames_German[DayOfWeek(date)];
  DateTimeFormat:=DateTimeFormat+', '+format('%.2d',[d]);
  DateTimeFormat:=DateTimeFormat+'.'+LongMonthNames_German[m]+'.';
  DateTimeFormat:=DateTimeFormat+format('%.4d',[j]);
  //'%dddd, %dd.'+LongMonthNames_German[DayOfWeek(date)]+'.%j';
 
//  DateTimeFormat:=;
  SynMemo1.Lines.Add(DateTimeFormat)
end;
Damit habe ich so eine Ausgabe:

Sontag, 05.August.2007
und zwar genau so wie ich es haben wollte. mir gefählt nur der Weg nicht. Ich hätte gerne das ich später das Ausgabe Format ändern kann.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Soweit ich weiss sollte sich das an den systemlocales orientieren. Ist dein System auf english gestellt ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

nein. Lazarus ist bei mir auf Deutsch !
Ich habe gesehen das es bei den auch Constanten sind !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Das Lazarus auf Deutsch ist, hat ja damit noch lange nichts zu tun.
Eigentlich sollte er sich die LongDayNames irgendwann vom System holen im Linux geht das anscheinend nicht korrekt. Du kannst sie manuell mit

Code: Alles auswählen

DefaultFormatSettings.LongDayNames := ('Sontag','Montag','Dienstag','Mittwoch','Donnertag','Freitag','Samstag');
setzen.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

in welcher Unit ?
die Monate werden auch noch auf englisch gesetzt!
Aber danke für den Tipp !
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

SysUtils müsste das sein
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

ne ist es leider nicht.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Doch ist es, warum schreibst du nicht einfach das so in deinem programm wie ich es gepostet habe ? Wozu willst du die Unit wissen ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Ganz einfach:
Schreibe ich es in onCreate rein findet er DefaultFormatSettings

macht das nix das LongDayNames Constanten sind ?
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ja ist doch prima das er sie Findet. Und was willst du noch ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Quatsch sind doch gar keine Konstanten wo nimmst du denn das immer her ?

DefaultFormatSettings

ist rein record über var in Zeile 63 in sysinth.inc deklariert. Ich seh da gar nichts konstantes.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

Code: Alles auswählen

Const
 
   { Character to be put between date, month and year }
   DateSeparator: char = '-';
 
   { Format used for short date notation }
   ShortDateFormat: string = 'd/m/y';
 
   { Format used for long date notation }
   LongDateFormat: string = 'dd" "mmmm" "yyyy';
 
 
   { Short names of months. }
   ShortMonthNames: array[1..12] of string[128] =
     ('Jan','Feb','Mar','Apr','May','Jun',
      'Jul','Aug','Sep','Oct','Nov','Dec');
 
   { Long names of months. }
   LongMonthNames: array[1..12] of string[128] =
     ('January','February','March','April','May','June',
      'July','August','September','October','November','December');
 
   { Short names of days }
   ShortDayNames: array[1..7] of string[128] =
     ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
 
   { Full names of days }
   LongDayNames: array[1..7] of string[128] =
     ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
 
   { Format used for short time notation }
   ShortTimeFormat: string[128] = 'hh:nn';
 
   { Format used for long time notation }
   LongTimeFormat: string[128] = 'hh:nn:ss';
 
   { Character to be put between hours and minutes }
   TimeSeparator: char = ':';
 
   { String to indicate AM time when using 12 hour clock. }
   TimeAMString: string[7] = 'AM';
 
   { String to indicate PM time when using 12 hour clock. }
   TimePMString: string[7] = 'PM';
darum.

in der Zeile 63 steht

Code: Alles auswählen

{ Full names of days }
   LongDayNames: array[1..7] of string[128] =
     ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
edit: jetzt verstehe ich: du meinst ich sollte diese Zeile Dirket ändert und fertig.
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Aus welcher Datei hast du das ?
Welchen FPC nimmst du ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Beitrag von pluto »

FPC:2.0.4
Das habe ich aus der Datei die du gesagt hast: SysUtils.inc
MFG
Michael Springwald

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich hab zwar nix von Sysutils.h gesagt aber das scheint beim fpc 2.0.4 noch ziemlich anders implementiert gewesen zu sein. Dann bleibt dir wohl nur deine Methode.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten