Lange Monatsnamen im StringGrid

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
derWitte
Beiträge: 5
Registriert: Di 15. Sep 2015, 13:23
OS, Lazarus, FPC: W10, FPC 2.6.4
CPU-Target: 64Bit

Lange Monatsnamen im StringGrid

Beitrag von derWitte »

Hallo,
von Delphi her kenne ich die Funktion LongMonthNames die ich jetzt mit FPC 2.6.4 in einem StringGrid übernommen hatte.
Ein Hinweis zeigt mir an, dass diese Methode veraltet (deprecated) ist.
Die Monatsnamen werden mir aber alle in der ersten Spalte des Grids in deutsch angezeigt.
Es gibt aber eine Besonderheit beim Monat März:
der Umlaut ä wird nicht angezeigt, stattdessen wird ein ? ausgegeben, so M?rz.
1. Frage: Ist das jetzt ein Fehler der aus der veralterten Funktion entstanden sein könnte?
2. Frage: Wenn ja, müsste ich ein neues Array (Monatsnamen) deklarieren?
3. Frage: Wie würde eine kleines Code-Beispiel für die erste Spalte eines Grid mit den deutschen Monatsnamen aussehen?

Oder kann es andere Ursachen haben wie z.B. Utf-8 o.ä. ?
___________________________________________
Windows10 Pro - amd64 - Lazarus 1.4.2 FPC 2.6.4

Danke wenn mir jemand helfen könnte oder Hinweise zu Hilfen mitteilt.
Gruß
derWitte
Dateianhänge
Stringgrid1.Cells[x0,y].PNG
Stringgrid1.Cells[x0,y].PNG (4.09 KiB) 557 mal betrachtet

wp_xyz
Beiträge: 5152
Registriert: Fr 8. Apr 2011, 09:01

Re: Lange Monatsnamen im StringGrid

Beitrag von wp_xyz »

Die Systemeinstellungen sind seit einiger Zeit im Record FormatSettings (oder DefaultFormatSettings) zusammengefasst, da findest du auch die Monatsnamen und z.B. das Dezimaltrennzeichen.

Das falsche Zeichen für das "ä" im März rührt bei deiner (veralteten) Lazarus/fpc-Version davon her, dass der alte fpc die Zeichen aus der System-Codepage genommen hat, Lazarus dagegen aus utf8, eine automatische Umwandlung fand nicht statt. Wenn du die Funktion SysToUtf8 aufrufst, kannst du das nachholen:

Code: Alles auswählen

 
var
  i: Integer;
begin
  for i:=1 to 12 do
    StringGrid1.Cells[0, i] := SysToUtf8(DefaultSettings.LongMonthNames[i]);
end;
Oder du upgradest auf das demnächst herauskommende Lazarus 1.6 mit dem neuen fpc 3.0, bei dem die Strings einfacher zu handhaben sind.

derWitte
Beiträge: 5
Registriert: Di 15. Sep 2015, 13:23
OS, Lazarus, FPC: W10, FPC 2.6.4
CPU-Target: 64Bit

Re: Lange Monatsnamen im StringGrid

Beitrag von derWitte »

Hallo wp_xyz!
Danke für die schnelle Antwort.
Hat wunderbar geklappt.
Musste nur noch die Methode ergänzen auf DefaultFormatSettings(LongMonthNames).
Gruß derWitte

Antworten