Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateien Verschieben (MoveFile) (https://www.delphipraxis.net/177656-dateien-verschieben-movefile.html)

Methrik 19. Nov 2013 12:20

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:
procedure TForm1.btStartClick(Sender: TObject);
begin
MoveFile('"C:\Users\Public\Documents\test.txt"','C:\Users\Public\Downloads\');
end;
hab es damit versucht! Ich hoffe, das jemand von euch eine Lösung weiß. Danke :wink:

himitsu 19. Nov 2013 12:26

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.

MSDN-Library durchsuchenMoveFile


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:

C:\Users\Public\Documents
Der Pfad kann sich ja mal ändern und hat es in der Vergangenheit auch schon öfters.

Klaus01 19. Nov 2013 12:28

AW: Dateien Verschieben (MoveFile)
 
Hallo,

was funktionert denn nicht genau - wie schaut die Fehlermeldung aus:

Zitat:

Return value

If the function succeeds, the return value is nonzero.

If the function fails, the return value is zero.
To get extended error information, call GetLastError.
Quelle

Der schöne Günther 19. Nov 2013 12:30

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:
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;
Kann sein dass du bei XE3 das
Delphi-Quellcode:
returnedErrorCode.ToString()
durch
Delphi-Quellcode:
IntToStr(returnedErrorCode)
ersetzen musst.

Jedenfalls liefert obiger Block die Fehlermeldung im Anhang.

TiGü 19. Nov 2013 12:30

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!

Der schöne Günther 19. Nov 2013 12:33

AW: Dateien Verschieben (MoveFile)
 
Zitat:

Zitat von TiGü (Beitrag 1236560)
Der neue Dateiname muss angegeben werden!

Das kommt erschwerend hinzu ;-)

himitsu 19. Nov 2013 12:33

AW: Dateien Verschieben (MoveFile)
 
Zitat:

Zitat von TiGü (Beitrag 1236560)
Der neue Dateiname muss angegeben werden!

Nein, siehe MSDN.

Der schöne Günther 19. Nov 2013 12:34

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.

Methrik 19. Nov 2013 12:38

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'));

himitsu 19. Nov 2013 12:42

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 20:00 Uhr.
Seite 1 von 2  1 2      

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