Bei implizitem Cast wird gemeckert,
aber bei expliziten Casts nicht:
Delphi-Quellcode:
FIni:= TIniFile.Create(AnsiString(FFileName));
try
FValue:= WideString(FIni.ReadString('foo', 'bar', 'blub'));
Das Zweite wäre kein Problem, da ja Klein zu Groß und es somit rein passen würde.
Beim Ersten, sieht es anders aus ... also problematisch, wenn Unicodezeichen im Dateiname vorkommen würden, welche außerhalb des jeweiligen
ANSI-Zeichenraumes liegen.
ABER, ist das wirklich AnsiString, oder nicht vielleicht doch z.B. UTF-8 String?
Ich dachte der FPC hätte in seiner
RTL schon "
Unicode" und eben nicht
ANSI.
Wenn z.B. ein UTF8-String, dann wäre es schon unpraktisch, wenn FPC keine automatische Konvertierung zwischen den String-Typen bietet.
Wie genau sind denn TIniFile.Create und TIniFile.ReadString "wirklich" deklariert?
https://www.freepascal.org/docs-html...eadstring.html
Wenn tatsächlich "String" und String = AnsiString, dann ... Wo bitte hat FPC denn seine
unicode-fähige INI-Klasse versteckt?