TIniFile mit kyrillischen Zeichen erzeugen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

TIniFile mit kyrillischen Zeichen erzeugen

Beitrag von Scotty »

Ich kann mit UTF8ToSys() deutsche Umlaute im Dateinamen haben, aber keine griechischen oder russischen Buchstaben. Liegt das daran, dass diese Zeichen nicht in meiner Codepage enthalten sind? Und wie kann ich mit dem Problem umgehen?

Code: Alles auswählen

//  with TINiFile.Create('c:\temp\λλάς.ini') do //-> λλάς.ini
//  with TINiFile.Create(UTF8ToSys('c:\temp\λλάς.ini')) do -> IOError c:\temp\????.ini could not...
//  with TINiFile.Create(UTF8ToSys('c:\temp\Русские.ini')) do -> IOError c:\temp\????.ini could not...
  with TINiFile.Create(UTF8ToSys('c:\temp\äöü.ini')) do // -> ok
  try
    WriteString('test','test','test');
  finally
    Free;
  end;
 
Lazarus 1.1 r39466M FPC 2.6.0 i386-win32-win32/win64

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: TIniFile mit kyrillischen Zeichen erzeugen

Beitrag von theo »

Schnelle Antwort: Die FPC RTL ist afaik nach wie vor nicht Unicode fähig, und somit gibt es hierfür keine sehr einfache Lösung.

Scotty
Beiträge: 768
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: TIniFile mit kyrillischen Zeichen erzeugen

Beitrag von Scotty »

theo hat geschrieben:...und somit gibt es hierfür keine sehr einfache Lösung.
Wie sähe eine weniger einfache Lösung aus? Codepage herausfinden (per GuessEncoding() z.B.) und dann UTF8ToCP1253() (Auswahl über case) nehmen?

Benutzeravatar
theo
Beiträge: 10927
Registriert: Mo 11. Sep 2006, 19:01

Re: TIniFile mit kyrillischen Zeichen erzeugen

Beitrag von theo »

Scotty hat geschrieben:
theo hat geschrieben:...und somit gibt es hierfür keine sehr einfache Lösung.
Wie sähe eine weniger einfache Lösung aus? Codepage herausfinden (per GuessEncoding() z.B.) und dann UTF8ToCP1253() (Auswahl über case) nehmen?
Kannst es ja mal ausprobieren, aber ich tippe eher auf windows.CreateFileW(UTF8Decode(FileName),..) und Konsorten.

Antworten