![]() |
Dateien Verschieben (MoveFile)
Hallo Leute!
Das ist meine erste Frage die ich hier stelle :) Ich hab ein ganz dummes problem, und habe mich darüber auch schon viel informiert, nur helfen die Ratschläge nicht! Deshalb wende ich mich an euch. Ich möchte in meinem Programm einfach nur eine Datei in ein anderes Verzeichnis verschieben. Ich habe es mit MoveFile versucht aber irgendwie tut sich einfach nichts! :wall:
Delphi-Quellcode:
hab es damit versucht! Ich hoffe, das jemand von euch eine Lösung weiß. Danke :wink:
procedure TForm1.btStartClick(Sender: TObject);
begin MoveFile('"C:\Users\Public\Documents\test.txt"','C:\Users\Public\Downloads\'); end; |
AW: Dateien Verschieben (MoveFile)
Die wichtigsten Ratschäge hast du aber vermutlich nicht beachtet?
> In die Dokumentation schauen, wie die Parameter anzugeben sind > und da auch gleich mal nachsehnen, wie das mit der Fehlerbehandlung aussieht. ![]() Was machen die " im ersten Parameter? Und wieso wird der Rückgabewert nicht ausgewertet? PS: Gerade der sagt dir ob und auch warum es nicht geht. Und ich empfehle dir nicht auf "statische" Pfade zu gehen. Zitat:
|
AW: Dateien Verschieben (MoveFile)
Hallo,
was funktionert denn nicht genau - wie schaut die Fehlermeldung aus: Zitat:
![]() |
AW: Dateien Verschieben (MoveFile)
Liste der Anhänge anzeigen (Anzahl: 1)
Ich tippe um mein Leben und trotzdem drei neue Beiträge in der Zwischenzeit. Ich schicke es trotzdem ab ;-)
Hallo. Gibt es einen Grund, warum du direkt die Windows-Funktion MoveFile verwendest? Wenn du mal in die offizielle Microsoft-Dokumentation zu MoveFile schaust siehst du, dass die Funktion einen Rückgabewert (Boolean) zurückliefert und angibt, ob die Datei erfolgreich kopiert werden konnte oder nicht. Weiterhin kann man dann den genaueren Grund feststellen:
Delphi-Quellcode:
Kann sein dass du bei XE3 das
procedure TForm4.FormCreate(Sender: TObject);
var returnedErrorCode: Cardinal; begin //http://msdn.microsoft.com/en-us/library/windows/desktop/aa365239(v=vs.85).aspx/ if not MoveFile( '"C:\Users\Public\Documents\test.txt\"', // Warum hier Anführungsstriche drum? 'C:\Users\Public\Downloads\' // und hier nicht? ) then begin returnedErrorCode := GetLastError(); ShowMessage( 'Fehler aufgetreten: ' +SysErrorMessage(returnedErrorCode) +'. Fehlercode '+returnedErrorCode.ToString() ); end else ShowMessage('Kopiervorgang war erfolgreich'); end;
Delphi-Quellcode:
durch
returnedErrorCode.ToString()
Delphi-Quellcode:
ersetzen musst.
IntToStr(returnedErrorCode)
Jedenfalls liefert obiger Block die Fehlermeldung im Anhang. |
AW: Dateien Verschieben (MoveFile)
Delphi-Quellcode:
MoveFile('C:\Users\Public\Documents\test.txt','C:\Users\Public\Downloads\test.txt');
Du hast mehrfache Anführungszeichen ' und " verwendet! Der neue Dateiname muss angegeben werden! |
AW: Dateien Verschieben (MoveFile)
Zitat:
|
AW: Dateien Verschieben (MoveFile)
Zitat:
|
AW: Dateien Verschieben (MoveFile)
Doch. Entweder man kopiert ein Verzeichnis und gibt Verzeichnisse an oder man kopiert eine Datei und gibt Dateien an. So lese ich das da heraus.
Vielleicht etwas verwirrend, der Konsolenbefehl COPY verhält sich so, da kann man den Ziel-Dateinamen glaube ich auch weglassen und nur das Zielverzeichnis angeben. |
AW: Dateien Verschieben (MoveFile)
Danke für die schnellen Antworten.
Also ich habe eure Vorschläge getestet und 'TiGü' sowie 'Der schöne Günther' hatten recht :D es lag nur daran, dass ich dem anderen Dateipfad nicht den neuen Namen der Datei zugewiesen habe. Jetzt funktioniert es :D Dankeschön Außerdem habe ich meinen Code etwas umgeschrieben in:
Delphi-Quellcode:
MoveFile(PChar('C:\Users\Public\Documents\test.txt'), PChar('C:\Users\Public\Downloads\test.txt'));
|
AW: Dateien Verschieben (MoveFile)
Mir ist so, als wenn die Beschreibung mal anders lautete ... kann aber auch sein, daß ich es grade mit COPY (DOS) verwechsel.
Nja, aber es es schadet auch nix, wenn man den Dateinamen immer mit angibt. :angle2: Und wenn man den Dateinamen doch angeben muß, dann würde die Funktion ja die passendende Fehlermeldung anzeigen, falls man die Rückgaben auswertet. (probier ich dann daheim besser aber nochmal aus und revidiere es notfalls) Beim Kopieren von einer Datei: > Wenn der angegebenen Pfad vorhanden ist und es ist eine Datei, dann ist es das Zielverzeichnis und wenn nicht, dann wird es als Ziel-Dateiname verwendet. :gruebel: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 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