![]() |
ini file , readstring UTF vs. ASCII
bin mit dem Code unten gerade ziemlich aufgelaufen,
auf einem PC und einer ini Datei im UTF-8 Format lief der code ins leere, erst nachdem ich das Format der DAtei auf ASCII umgestellt habe gings, ist diese Problem bekannt ???
Delphi-Quellcode:
var IniFile: TIniFile; begin if FileExists(filename) then begin IniFile := TIniFile.Create(filename); try Result := IniFile.ReadString(SectionStr, IdentStr, '<none>'); finally IniFile.Free; end; end else begin Result := '<no file found>'; end; |
AW: ini file , readstring UTF vs. ASCII
Hat(te) die Datei vielleicht einen BOM (Byte Order Mark)? Wenn ja, ist das wahrscheinlich keine offiziell unterstützte Geschichte, denn die INI-Funktionen von Windows können nur ANSI und UTF-16.
Grüße Dalai |
AW: ini file , readstring UTF vs. ASCII
Ist doch kein Fehler oder?
Ini Files unterstützt kein Unicode. Dir wird also nichts anderes übrigbleiben zu prüfen in welchem Format die INI geschrieben wurde. Und dann entsprechend Utf8ToString verwenden. Oder Versuchs mal mit TMemIniFile |
AW: ini file , readstring UTF vs. ASCII
geschrieben wurde mit einer anderen Delphi Anwendung ,
auch wieder alles mit der Klasse Inifile ...... auf einem anderen PC hat die Anwendung ohne Probleme funktioniert :-) meine aktuelle Zwischenlösung : Datei mit Notepad öffnen und dann als ASCII Format abspeichern, dann scheint alles zu passen |
AW: ini file , readstring UTF vs. ASCII
Zitat:
Die Klasse TInifile ist ein Wrapper für die Windows API IniFiles und die kann nun mal nur EASCII (ANSI) und UTF-16. So wie @Dalai schon sagte. |
AW: ini file , readstring UTF vs. ASCII
Zitat:
Aber eben nur UTF-16 ohne BOM. TMemIniFiles von Delphi kann, wie eine TStringList, eben noch viel mehr, was aber die "offizielle" INI-API von Windows eben nicht "kann". Wie beim XML gibt es hier eine automatische Erkennung durch die #0 quasi '[...' oder '['#0'...' am Anfang. |
AW: ini file , readstring UTF vs. ASCII
a) wenn ich die Ini files Klasse weiterhin verwenden will, benötige ich einen Check auf BOM , ich habe diesen code hierzu gefunden
![]() eine extra Zeile Code und eine Exception werfen wenn das BOM Flag gefunden wird ? b) bei dieser Option , von ![]() wie übergebe ich den Filenamen an meine Settingsklasse ? Die Funktion
Delphi-Quellcode:
ist leider nicht erklärt
OpenIniFileInstance()
Delphi-Quellcode:
PS : diesmal wurde die Datei mit dem Notepad++ erstellt :-(var SettingsFile : TCustomIniFile; begin { Open an instance } SettingsFile := OpenIniFileInstance(); try { Read all saved values from the last session. The section name is the name of the form. Also use the form's properties as defaults. } Top := SettingsFile.ReadInteger(Name, 'Top', Top ); Left := SettingsFile.ReadInteger(Name, 'Left', Left ); Width := SettingsFile.ReadInteger(Name, 'Width', Width ); Height := SettingsFile.ReadInteger(Name, 'Height', Height ); Caption := SettingsFile.ReadString (Name, 'Caption', Caption); { Load last window state. } case SettingsFile.ReadBool(Name, 'InitMax', WindowState = wsMaximized) of true : WindowState := wsMaximized; false: WindowState := wsNormal; end; finally SettingsFile.Free; end; end; |
AW: ini file , readstring UTF vs. ASCII
Erstmal, INI-Dateiteien der WinAPI gibt es ausschließlich in ANSI oder UTF-16 (ohne BOM).
Dein Problem dürfte sich aber durch die TStringList lösen lassen, also mit RadioGroup1.ItemIndex=2. Zitat:
Zitat:
Zitat:
|
AW: ini file , readstring UTF vs. ASCII
nicht ganz, weil meiene naheliegende Lösung hier dann einen Abstract Fehler zurückliefert ....
Delphi-Quellcode:
var IniFile: TCustomIniFile; if FileExists(filename) then begin IniFile := TCustomIniFile.Create(filename); try Result := IniFile.ReadString(SectionStr, IdentStr, '<none>'); finally IniFile.Free; end; end else begin Result := '<no file found>'; end; |
AW: ini file , readstring UTF vs. ASCII
.. aus der Hilfe..
Zitat:
Klaus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz