Hallo,
Zitat von
RWarnecke:
Delphi-Quellcode:
procedure ShellFileOperation(fromFile, toFile: String; Flags: Integer);
var
shellinfo: TSHFileOpStructA;
begin
with shellinfo do
begin
wnd := Application.Handle;
wFunc := Flags;
pFrom := PAnsiChar(fromFile);
pTo := PAnsiChar(toFile);
end;
SHFileOperationA(shellinfo);
end;
Das ist natürlich falsch. Du übergibst einen Pointer auf einen WideString, sagst aber, es wäre ein AnsiString. Richtig ist:
Delphi-Quellcode:
procedure ShellFileOperation(fromFile, toFile: String; Flags: Integer);
var
shellinfo: TSHFileOpStructW; // <-----
begin
with shellinfo do
begin
wnd := Application.Handle;
wFunc := Flags;
pFrom := PChar(fromFile);
pTo := PChar(toFile);
end;
SHFileOperation(shellinfo);
end;
Wenn schon
Unicode, dann auch richtig.
Ich würde mich auch nicht wundern, wenn einfach TSHFileOpStruct gehen würde, das jetzt auf die
Unicode-Version zeigt. Dann könnte man immer den selben Code nehmen, der eben ja nach Compiler als
Ansi oder
Unicode compiliert wird.
Gruß
xaromz