Hallo,
aus einem String "0" wird ja wenn ich denn nach
Unicode umwandele -> $#00 + "0" + $#00
Ich habe das jetzt immer in einer Schleife gemacht (Verzeichnisname ->
Unicode)
Delphi-Quellcode:
result := '';
if s <> '' then begin
se := s;
while length(se) > 0 do begin
result := result + #$00 + se[1];
se := copy(se, 2, length(se));
end;
result := result + #$00;
end;
Jetzt habe ich aber bei einem User (Russischer Zeichensatz) ein Problem, dass er das Verzeichnis nicht findet. Mit großer Wahrscheinlichkeit ist mir hier die oben genannte Routine zum Verhängnis geworden.
Bei meinen folgenden Test bin ich auf das Problem gestoßen, dass ich ein Unicodezeichen nicht in ein Char umwandeln kann.
"0" ist ja $#00 + "0" - ein Unicodezeichen entspricht also zwei Chars. Mit der unten gezeigten Routine komm ich aber nur an ein Char. Im Beispiel "0" bekomme ich also nur das Zeichen "0" zurück anstatt $#00 + "0".
Delphi-Quellcode:
var Test,Test1:PWideChar;
i : integer;
sm : string;
begin
Test := AllocMem(length(s)*2);
try
Test1:=StringToWideChar(s,Test,length(s)*2);
result := '';
sm := '';
for i := 0 to Length(Test1) do begin
//Result := Result +
sm := sm + ' ' + inttostr(ord(test1[i]));
end;
WriteToLog('Test=' + sm);
finally
// Test1 wird hierdurch auch ungültig
FreeMem(Test,length(s)*2);
end;
Ich hoffe ihr versteht mein Problem und habt evt. eine Lösung für mich.
Danke schonmal