AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateien Verschieben (MoveFile)

Offene Frage von "himitsu"
Ein Thema von Methrik · begonnen am 19. Nov 2013 · letzter Beitrag vom 19. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Methrik
Methrik

Registriert seit: 26. Sep 2013
Ort: San Andreas
3 Beiträge
 
Delphi XE3 Professional
 
#1

Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:20
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!

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
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:26
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Nov 2013 um 12:30 Uhr)
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:28
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
Klaus
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:30
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 returnedErrorCode.ToString() durch IntToStr(returnedErrorCode) ersetzen musst.

Jedenfalls liefert obiger Block die Fehlermeldung im Anhang.
Miniaturansicht angehängter Grafiken
unbenannt.png  
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:30
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!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:33
Der neue Dateiname muss angegeben werden!
Das kommt erschwerend hinzu
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:33
Der neue Dateiname muss angegeben werden!
Nein, siehe MSDN.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Nov 2013 um 12:50 Uhr)
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#8

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:34
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.
  Mit Zitat antworten Zitat
Benutzerbild von Methrik
Methrik

Registriert seit: 26. Sep 2013
Ort: San Andreas
3 Beiträge
 
Delphi XE3 Professional
 
#9

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:38
Danke für die schnellen Antworten.

Also ich habe eure Vorschläge getestet und 'TiGü' sowie 'Der schöne Günther' hatten recht
es lag nur daran, dass ich dem anderen Dateipfad nicht den neuen Namen der Datei zugewiesen habe.
Jetzt funktioniert es
Dankeschön

Außerdem habe ich meinen Code etwas umgeschrieben in:

MoveFile(PChar('C:\Users\Public\Documents\test.txt'), PChar('C:\Users\Public\Downloads\test.txt'));

Geändert von Methrik (19. Nov 2013 um 12:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 12:42
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.
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:47 Uhr.
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