ich poste hier im "Dies-und-Das"-Bereich weil es nicht direkt um Lazarus geht - sondern eher um Delphi (Seattle).
Das Problem tritt bei Delphi (unter Windows natürlich) auf. Es geht um INI-Files, die genutzt werden, um Projekt- und Setup-Parameter für (aufwändigere) Rechnungen zu speichern und wieder zu laden - das geht grundsätzlich auch sehr gut.
Das Programm wird im internationalen Umfeld eingesetzt, so dass Floats z.B. am besten im US-Format - also mit '.' als Dezimaltrenner gespeichert werden (sollten). Jetzt gibt es immer mal Kollegen, die eine DE- statt der US-Einstellung als Formateinstellung für Zahlen- und Datumsformate im Windows Desktop nutzen, was dazu führt, dass man im Programm eine Meldung "1,23 is not a valid float" (also mit ','). Und das, obwohl im INI-File eindeutig '1.23' (mit '.') steht. Das ist ärgerlich (irgendwas passiert also beim Einlesen oder später beim Umwandeln des Strings in ein Float).
Ich frage mich, ob und wie ich dem von Programm-Seite Herr werden könnte - um einfach auchg den verärgerten Nutzer zu vermeiden.
Unter Lazarus geht folgendes:
Code: Alles auswählen
const
DATETIMEFORMATSTR = 'yyyy"-"mm"-"dd hh":"mm":"ss';
procedure LoadINI(const Filename: string; var PD: TBMSCProject);
var
Section, DataStr: String;
DataInt: integer;
begin
INI := TMemINIFile.Create(Filename);
try
// set format to dedicated international engineering style
INI.FormatSettings.DecimalSeparator := '.';
INI.FormatSettings.DateSeparator := '-';
INI.FormatSettings.ShortDateFormat := DATETIMEFORMATSTR;
[...]
Unter Delphi Seattle gibt es die INI.FormatSettings-Struktur für TINIFile bzw. TMemINIFile leider (noch) nicht.
Welche Möglichkeiten gäbe es denn sonst?
Am einfachsten wäre es, wenn der Zahlen-String unverändert übernommen würde und in ein Float gewandelt wird - unabhängig von irgendwelchen Einstellungen. Im INI-File selbst kann ich ja (notfalls mit einem ASCII-Editor) dafür sorgen, dass ein '.' als Dezimaltrenner genutzt wird - eigentlich sollte das Verhalten für Schreiben und Lesen gleich sein. Eventuell das Format selbst auch im INI-File speichern?
Dankbar für jeden Tipp,
Photor