Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   MoveFile funktioniert nicht (https://www.delphipraxis.net/170245-movefile-funktioniert-nicht.html)

TRUCKERmas 6. Sep 2012 20:59

Delphi-Version: 7

MoveFile funktioniert nicht
 
Warum auch immer, weigert sich MoveFile meine Dateien zu verschieben, kann mir jemand sagen woran das liegen könnte?

Delphi-Quellcode:
      if FindFirst('*',faAnyFile,SR1) = 0 then
      repeat
         if not((SR1.Name='.') or (SR1.Name='..')) then
            MoveFile(PansiChar('"' + tempdir + '\' + SR1.Name + '"'),PansiChar('"' + path + extradir + skin + '\' + SR1.Name + '"'));
      until FindNext(SR1)<> 0;
      Findclose(SR1);

Uwe Raabe 6. Sep 2012 21:03

AW: MoveFile funktioniert nicht
 
Vielleicht musst du tempdir mit in das FindFirst aufnehmen. Auf die Anführungszeichen kannst du wohl auch verzichten.

Dalai 6. Sep 2012 21:10

AW: MoveFile funktioniert nicht
 
Zwar nicht zum Thema, aber ich sage/schreibe es trotzdem: Ich glaube, du solltest einen genaueren Blick auf die Funktion Format() werfen, denn solche Verkettungen von Variablen und Strings sind unübersichtlich. Weiterhin gibt es eine Funktion namens AnsiQuotedStr() zum einfachen Hinzufügen von Anführungszeichen (zum Entfernen gibt's auch eine), aber natürlich schließe ich mich meinem Vorschreiber an: die Anführungszeichen sind wohl überflüssig.

MfG Dalai

p80286 6. Sep 2012 21:11

AW: MoveFile funktioniert nicht
 
Ganz banal ist path,extradir und skin überhaupt vorhanden?
ggf. solltest Du mit pathexists und forcedirectory die entsprechenden Bedingungen prüfen bzw. herstellen.

Gruß
K-H

himitsu 6. Sep 2012 21:34

AW: MoveFile funktioniert nicht
 
Wozu sind denn die " ?
Schau mal ins MSDN, was MoveFile wirklich haben will.

Dann sucht dein FindFirst nicht im selben Verzeichnis, wo das MoveFile arbeitet. (Pfadangabe vergessen)

Resourcenschutzblöcke solltest du dir auch mal angewöhnen. (Try-Finally)



Wieso kommt eigentlich niemand auf so saublöde Ideeen und prüft Rückgabewerte von aufgerufenen Funfktionen?

Siehe MSDN-Library durchsuchenMoveFile, MSDN-Library durchsuchenGetLastError, Delphi-Referenz durchsuchenSysErrorMessage, Delphi-Referenz durchsuchenRaiseLastOSError (Delphi-Referenz durchsuchenRaiseLastWin32Error)

Delphi-Quellcode:
if not MoveFile(PChar(....) then
  RaiseLastOSError;



Außerdem solltest du es lassen dynamische Funktionen mit statische Typen zu kombinieren.

MoveFileA + PAnsiChar + AnsiString
MoveFileW + PWideChar + WideString/UnicodeString
MoveFile + PChar + String

EWeiss 6. Sep 2012 21:58

AW: MoveFile funktioniert nicht
 
Zitat:

Wozu sind denn die " ?
Vielleicht von VB übernommen :duck:

gruss

himitsu 6. Sep 2012 22:16

AW: MoveFile funktioniert nicht
 
Auch wenn man in VB Strings mit " begrenzt (kenn ich ja auch von PHP und Co.), dann sollte bei aufruf der gleichen Funktion dort ebenfall kein " im String vorkommen.

Zitat:

Delphi-Quellcode:
'"' + Pfad + '"'



Alle Zeitangaben in WEZ +1. Es ist jetzt 09:23 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