Entwickler-Ecke

Windows API - Batcherstellung für das kopieren von Dateien mit Sonderzeich


WEBSTER - Mi 27.06.07 16:32
Titel: Batcherstellung für das kopieren von Dateien mit Sonderzeich
Salute,

ich habe mir ein Tool entwickelt. Welches einen CopyString in ein Memo schreibt. Das Memo speichere ich dann mit savetofile als Batch ab.

In diesem steht dann z.B.


Quelltext
1:
xcopy "Z:\Sicherung_Kundenrechner\Wanja\PC01\Dokumente und Einstellungen\All Users\Startmenü\Programme\Programme\Brockhaus Multimedia\Brockhaus multimedial\Data\BMMUSER.LD" "F:\DVD\DVD3\Sicherung_Kundenrechner\Wanja\PC01\Dokumente und Einstellungen\All Users\Startmenü\Programme\Programme\Brockhaus Multimedia\Brockhaus multimedial\Data\" /C /H /Y                    


Das Problem liegt darin, wenn ich das Batchfile ausführe kopiert er mir genau die Dateien nicht, die einen Umlaut im Pfad stehen haben.

Der Umlaut Ü wird wärend des Kopiervorgangs als ³ dargestellt. Wenn ich den Copysting aber mit copy&paste in einee Boxbox eingebe funktioniert der Kopiervorgang.

Wie kann ich dieses Problem lösen....?

THX
WEBSTER


Calculon - Mi 27.06.07 17:12

Dazu gab's hier [http://www.delphi-forum.de/viewtopic.php?t=71406&highlight=str] schonmal'n Thread.


Narses - Mi 27.06.07 17:50

Moin!

Ganz konkret: die Systemfunktionen OemToChar()bzw. CharToOem()im MSDN oder in der Online-Hilfe nachschlagen. :idea:

cu
Narses


WEBSTER - Mi 27.06.07 21:38

Salute,

danke für den Tipp. Habe es Dank deines Hinweises so gelöst:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function ANSI2ASCII(AText:string):string;
const MaxLength = 512;
var PText : PChar;
begin
  PText:=StrAlloc(MaxLength);
  StrPCopy(PText,AText);
  {$IFDEF WIN32}
  CharToOEM(PText,PText); {32Bit}
  {$ELSE}
  AnsiToOEM(PText,PText); {16Bit}
  {$ENDIF}
  Result:=StrPas(PText);
  StrDispose(PText);
end;



THX
WEBSTER


Delete - Do 28.06.07 16:20

Geht es so auch?

Delphi-Quelltext
1:
Memo1.OEMConvert:= true;