Danke Christian für den Tipp.
SHFileOperation scheint kein LastError zu setzen. "Der Vorgang wurde erfolgreich ausgeführt." ist ja wohl kein Fehler. Schöne wäre es, wenn der Vorgang erfolgreich gewesen wäre.
Aber das Weglassen des
FOF_SILENT-Flags hat mir einen andere Fehlermeldung geliefert:
Zitat:
Datei kann icht umbenannt werden. Wählen Sie nur eine Datei, oder verwenden Sie MS-DOS-Platzhalter ...
Ich verwende SHFileOperation z.Z. so:
Delphi-Quellcode:
function fktRenameDir(psFrom, psTo: string) : boolean;
var
shellinfo: TSHFileOpStruct;
nErr : integer;
begin
shellinfo.Wnd := 0;
shellinfo.wFunc := FO_RENAME;
shellinfo.pFrom := PChar(psFrom);
shellinfo.pTo := PChar(psTo);
shellinfo.fFlags := FOF_ALLOWUNDO or
// FOF_SILENT or
// FOF_FILESONLY or
FOF_NOCONFIRMATION;
nErr := SHFileOperation(shellinfo);
if nErr <> 0 then
begin
ShowMessage('Error: ' + inttostr(nErr) + ' ' + SysErrorMessage(GetLastError));
end;
result := (nErr = 0)
end;
Die Verzeichnisnamen in
psFrom und
psTo sind korrekt.
psFrom existiert und
psTo existiert noch nicht.
Die Verzeichnisse (ich benenne ja mehrere Verzeichnisse in einer Schleife um) sind teilweise leer, teilweise nicht.
Das sollte aber mMn keinen Unterschied machen, da andere Verzeichnisse, egal ob leer oder nicht, korrekt umbenannt werden.
Die Rechte diese Verzeichnisse umzubenennen habe ich auch.
Irgendwie steh ich auf dem Schlauch.
Kann doch wieder nur eine Kleinigkeit sein, die ich einfach übersehe