Zitat:
Delphi-Quellcode:
if not Renamefile(strOldFile, strNewFile) then
begin
ShowWarning('Fehler bei Umbenennen von ' + #13#10 + strOldfile +
#13#10 + 'nach' + #13#10 + strNewFile);
ShowMessage(SysErrorMessage(GetLastError));
break;
end;
Was kommt denn für eine Meldung raus, wenn du GetLastError vor den
anderen vielen WinAPIs abfragst, welche sich in ShowWarning verstecken?
Delphi-Quellcode:
if not Renamefile(strOldFile, strNewFile) then
begin
E := GetLastError;
ShowWarning('Fehler bei Umbenennen von ' + #13#10 + strOldfile +
#13#10 + 'nach' + #13#10 + strNewFile);
ShowMessage(SysErrorMessage(E));
break;
end;
Delphi-Quellcode:
if not Renamefile(strOldFile, strNewFile) then
begin
S := SysErrorMessage(GetLastError);
ShowWarning('Fehler bei Umbenennen von ' + #13#10 + strOldfile +
#13#10 + 'nach' + #13#10 + strNewFile);
ShowMessage(S);
break;
end;
oder gleich
Delphi-Quellcode:
if not Renamefile(strOldFile, strNewFile) then
begin
E := GetLastError;
//ShowWarning('Fehler bei Umbenennen ' + sLineBreak +
// 'von ' + strOldfile + sLineBreak +
// 'nach' + strNewFile + sLineBreak +
// SysErrorMessage(E));
ShowWarning(Format('Fehler bei Umbenennen '#13#10'von %s'#13#10'nach %s'#13#10'%s',
[strOldfile, strNewFile, SysErrorMessage(E)]));
break;
end;
PS:
RenameFile ist schon immer eine direkte Umleitung auf
MoveFile, ohne irgendwelchen Schnickschnack, also klappt das mit dem GetLastError danach, aber stimmt schon ... im Sige auf MacOS, Linux und Co. könnte sich daran was ändern.
Aber hier macht es eigentlich keinen Sinn, daß Delphi/Embarcadero da noch anderen Code einfügt, da nur eine Konvertierung von String auf PChar nötig ist.
Delphi-Quellcode:
function RenameFile(const OldName, NewName: string): Boolean;
begin
{$IFDEF MSWINDOWS}
Result := MoveFile(PChar(OldName), PChar(NewName));
{$ENDIF MSWINDOWS}
{$IFDEF POSIX}
Result := __rename(PAnsiChar(UTF8String(OldName)), PAnsiChar(UTF8String(NewName))) = 0;
{$ENDIF POSIX}
end;