Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.051 Beiträge
 
Delphi 12 Athens
 
#7

AW: RenameFile schlägt fehl - falscher Parameter

  Alt 5. Feb 2011, 20:03
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: Delphi-Referenz durchsuchenRenameFile ist schon immer eine direkte Umleitung auf MSDN-Library durchsuchenMoveFile, 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;
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu ( 5. Feb 2011 um 20:10 Uhr)
  Mit Zitat antworten Zitat