AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

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, 13: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
44.100 Beiträge
 
Delphi 12 Athens
 
#2

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

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

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

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#4

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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.070 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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.160 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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
44.100 Beiträge
 
Delphi 12 Athens
 
#7

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13:33
Der neue Dateiname muss angegeben werden!
Nein, siehe MSDN.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.

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

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

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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, 13: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 13:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Dateien Verschieben (MoveFile)

  Alt 19. Nov 2013, 13: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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:25 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