Hallo Rolf,
ich habe mal ein kleines Testprogramm gebastelt und bekomme die Zeichen hier mit Hilfe eines RawByteString und mit TmemIniFile korrekt, wenn ich deine Anforderung richtig verstanden habe:
Delphi-Quellcode:
program readansiini;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
IniFiles;
var
myIni: TMemIniFile;
rawStr: RawByteString;
uniStr:
string;
i: integer;
begin
try
{ TODO -oUser -cConsole Main : Code hier einfügen }
myIni:=TMemIniFile.Create('
test.ini',TEncoding.ANSI);
rawStr:=rawByteString(myIni.ReadString('
test1','
password','
'));
write('
Raw: ');
for I := 1
to Length(rawStr)
do
write(ord(rawStr[i]).ToString+'
-- ');
Writeln(rawStr);
Write('
Unicode: ');
uniStr:=myIni.ReadString('
test1','
password','
');
for I := 1
to Length(uniStr)
do
write(ord(unistr[i]).ToString+'
-- ');
writeln(uniStr);
readln;
myIni.Free;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
end.
In der Datei test.ini steht an der zweiten Stelle das von dir erwähnte Zeichen Hex 96 (also
Dec 150). Im rawByateString bleibt es auch korrekt erhalten, im
Unicode-String wird es, wie von dir beschrieben, umgewandelt. Die Ausgabe vom Programm ist hier also (wichtig ist die zweite Zahl):
Code:
Raw: 116 -- 150 -- 116 -- 252 -- 116 -- 228 -- t-tütä
Unicode: 116 -- 8211 -- 116 -- 252 -- 116 -- 228 -- t-tütä
Das heißt: damit müsstest du deine bisherigen Daten doch ohne for-Schleife und ähnliches lesen und konvertieren können?