Thema: Delphi Unicode Frage

Einzelnen Beitrag anzeigen

Benutzerbild von hitzi
hitzi

Registriert seit: 2. Jan 2003
Ort: Eibau
768 Beiträge
 
Delphi 2010 Professional
 
#1

Unicode Frage

  Alt 22. Dez 2004, 15:48
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
Thomas
Besucht doch mal http://www.hitziger.net
  Mit Zitat antworten Zitat