Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   RenameFile funktioniert nicht !!! (https://www.delphipraxis.net/156259-renamefile-funktioniert-nicht.html)

Metallicwar 25. Nov 2010 11:33

RenameFile funktioniert nicht !!!
 
Hallo zusammen, habe zwar über die SuFu schon einige Threads zu "RenameFile" gefunden, aber keins, das mir bei meinem Problem wirklcih weiterhilft.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  iDatensätze: Integer;
  sNeueDatei: String;
  sAlteDatei: String;
begin
  qMensch.SQL.Text := 'SELECT Name, Vorname, Geburtsname FROM Mensch';

  qMensch.Open;

  qMensch.First;
  for iDatensätze := 0 to qMensch.RecordCount - 1 do
    begin
      sNeueDatei := qMensch.FieldByName('Name').AsString + '_' + qMensch.FieldByName('Vorname').AsString; // --> heißt dann z.B. Mark_Mustemann.txt
      sAlteDatei := qMensch.FieldByName('Geburtsname').AsString; --> z.B. MarC_Mustermann.txt
      //ShowMessage(sNeueDatei);
      SysUtils.RenameFile(sAlteDatei, sNeueDatei);//--> ändert den namen einfach nicht
      qMensch.Next;
    end;
end;

end.
Hab in einem anderen Beitrag gelesen, dass RenameFile nurfunktioniert, wenn die Datei im selben Verzeichnis liegt.
Kann mir jmd sagen, wieso, RenamFile bei mir nicht funktioniert? :o
mfg David

mkinzler 25. Nov 2010 11:34

AW: RenameFile funktioniert nicht !!!
 
Erzeuge die Dateinamen mit kompletten Pfad

Satty67 25. Nov 2010 11:40

AW: RenameFile funktioniert nicht !!!
 
Ganz allgemein kann man sich bei Systemfunktionen auch sagen lassen, warum es nicht funktioniert.

Also konkret nach RenameFile ein
Delphi-Quellcode:
ShowMessage(SysErrorMessage(GetLastError));

Metallicwar 25. Nov 2010 11:41

AW: RenameFile funktioniert nicht !!!
 
Delphi-Quellcode:
SysUtils.RenameFile('C:\DatabaseDir\Mensch\' + sAlteDatei, 'C:\DatabaseDir\Mensch\' + sNeueDatei);
it works fine, thanks :)

Metallicwar 25. Nov 2010 11:43

AW: RenameFile funktioniert nicht !!!
 
Zitat:

Ganz allgemein kann man sich bei Systemfunktionen auch sagen lassen, warum es nicht funktioniert.

Also konkret nach RenameFile ein
ShowMessage(SysErrorMessage(GetLastError));
hab ich auch mal probiert. Bekam als Meldung: DAs System kann den angegebenen Pfad nicht finden.
Das Problem hat sich damit schön gelöst, danke für die schnelle Hilfe.
Einfach spitze! Daumen hoch :)

Assarbad 25. Nov 2010 16:35

AW: RenameFile funktioniert nicht !!!
 
@Satty67: Vorsicht, es handelt sich nicht wirklich um eine Systemfunktion, siehe MSDN-Library durchsuchenRenameFile (was keinen Treffer für Win32 gibt ;)). Nur wenn man MSDN-Library durchsuchenMoveFile (oder MSDN-Library durchsuchenMoveFileEx) direkt benutzt kann man sich sicher sein, daß MSDN-Library durchsuchenGetLastError etwas sinnvolles ergibt. Denn die Implementation von RenameFile kann sich ggf. auch ändern und in diesem Falle könnten mehrere Win32-APIs aufgerufen werden, wobei dann nicht mehr klar ist welche den Fehlercode erzeugt hat. Das aber nur als Hinweis am Rande.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz