Problem beim lesen aus INI Datei

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
babelfish
Beiträge: 3
Registriert: Mo 22. Feb 2016, 19:31

Problem beim lesen aus INI Datei

Beitrag von babelfish »

Hallo, ich zerbreche mir gerade seit einer Weile dem Kopf, finde den Fehler aber nicht.
Vielleicht kann mir jemand von euch sagen was ich falsch mache.
Ich habe hier eine iniDatei mit folgenden Inhalt:

[language]
t_address=Anschrift
t_zipCode = PLZ
t_city = Ort
t_email = E-Mail

und so möchte ich die Werte einlesen:

Code: Alles auswählen

procedure TDM.readLanguage();
var
  ini: TIniFile;
  filename: String;
begin
  filename := 'c:\lang_default.ini';
  ini := TIniFile.Create(filename);
  try
     v_address := ini.ReadString('language','t_address','t_translate');
     v_zipCode := ini.ReadString('language','t_zipCode','t_translate');
     v_city := ini.ReadString('language','t_city','t_translate');
     v_email := ini.ReadString('language','t_email','t_translate');
  finally
    ini.Free;
  end;
end;
Aber ich bekomme immer nur den Defaultwert t_translate bei allen Variablen
Was mach ich falsch?

Danke und Gruß

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Problem beim lesen aus INI Datei

Beitrag von Mathias »

Du hast vor den "=* Leerzeichen. die könnten vielleicht Probleme machen.
Oder einen Datei direkt bei C:\ sieht Windows nicht gerne.

Hast du die Ini-Datei mit TIniFile erzeugt, oder mit einem Text-Editor ?
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

babelfish
Beiträge: 3
Registriert: Mo 22. Feb 2016, 19:31

Re: Problem beim lesen aus INI Datei

Beitrag von babelfish »

Danke für die Tipps
Mathias hat geschrieben:Du hast vor den "=* Leerzeichen. die könnten vielleicht Probleme machen.
Oder einen Datei direkt bei C:\ sieht Windows nicht gerne.
Hast du die Ini-Datei mit TIniFile erzeugt, oder mit einem Text-Editor ?
Ich habe es jetzt ohne die Leerzeichen probiert und in einem anderen Verzeichnis c:temp
Hat leider nicht geholfen.

Die Datei habe ich mit einem Editor erstellt Notepad++
Kann das daran liegen?

babelfish
Beiträge: 3
Registriert: Mo 22. Feb 2016, 19:31

Re: Problem beim lesen aus INI Datei

Beitrag von babelfish »

Danke Mathias!!
Du hast mich auf die richtige Idee gebracht.
Im Notepad++ habe ich umgestellt auf UTF8 ohne BOM
und schon gehts.

Danke !!!

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Problem beim lesen aus INI Datei

Beitrag von Mathias »

Im Notepad++ habe ich umgestellt auf UTF8 ohne BOM
Interessant, da da UTF8 einen Einfluss hat, es werden ja keine Umlaute oder sonstige Zeichen verwendet.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

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

Re: Problem beim lesen aus INI Datei

Beitrag von wp_xyz »

Nein, UTF8 an sich ist nicht das Problem, aber der BOM (byte-order-marker). Das sind - normalerweise - 2-3 Bytes am Dateianfang, an denen das lesende Programm erkennen kann, ob die Bytes von Multi-Byte-Zeichen in Little- oder Big-Endian-Konvention geschrieben sind. Damit kommen ältere TIniFile-Versionen nicht zurecht; mit FPC3 kann aber auch eine UTF8-BOM-Ini-Datei richtig gelesen werden.

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Problem beim lesen aus INI Datei

Beitrag von Mathias »

Mit BOM habe ich mich noch nie beschäftigt, ich dachte immer eine Text-Datei habe keine solchen Steuerzeichen.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Antworten