Einzelnen Beitrag anzeigen

Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#1

Commandline mit WideString speichern?

  Alt 4. Aug 2007, 23:14
Nachdem ich das Problem mit CreateProcessW lösen konnte und sich Verzeichnisnamen mit Unicodezeichen korrekt übergeben lassen, möchte ich die Commandline auch speichern können.

Bei Ansicode-Batchdateien verwende ich eine TStringList, welche mit SaveToFile gespeichert wird. Hier versuchte ich zunächst eine TTNTStringList. Jedoch scheitert die Ausführung anscheinend bereits am Byte Order Mark. Entferne ich dies, scheitert es an den 00, welche den Ansicodezeichen angehängt wurden. Entferne ich diese ebenfalls, werden die Unicodezeichen falsch decodiert. Vermutlich weil TTNTStringList die Codierung falsch erkennt. Bei der Verwendung von TWideStringList dasselbe Bild. Lediglich wenn in der Commandline kein Unicodezeichen enthalten sind, speichert TWideStringList als Ansi und die kann dann ausgeführt werden.

Die Microsoft GUI zu RoboCopy für XP speichert seine Scripts als Commandline. Diese sollen laut Editor UTF-8 kodiert sein. Wird die *.CMD allerdings ausgeführt, werden die Unicodezeichen falsch decodiert. Das es gehen könnte/sollte, zeigt CreateProcessW.

Zum Parsen von WideParamStr gibt es Routinen. Für das Speichern von WideCommandline konnte ich bisher nichts finden. Weiß da jemand Bescheid?
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat