Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   CopyFile - komme über den Flag nicht weiter... (https://www.delphipraxis.net/185138-copyfile-komme-ueber-den-flag-nicht-weiter.html)

AlexII 18. Mai 2015 20:10

CopyFile - komme über den Flag nicht weiter...
 
Hallo,

irgendwie stehe ich auf dem Schlauch, habe folgendes:

Delphi-Quellcode:
// flags for copy
type
 TCopyFileFlag = (
   cffOverwriteFile,
   cffCreateDestDirectory,
   cffPreserveTime
   );
 TCopyFileFlags = set of TCopyFileFlag;
 

function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;


procedure ....
begin
CopyFile('C:\test\test.txt', 'D:\testtest\.txt', cffCreateDestDirectory);
end;
Aber mir kommt die Fehlermeldung
Zitat:

Error: Incompatible type for arg no. 3: Got "TCopyFileFlag", expected "LongBool"
Was mache ich falsch?

Vielen Dank!

himitsu 18. Mai 2015 20:13

AW: CopyFile - komme über den Flag nicht weiter...
 
Zitat:

Zitat von AlexII (Beitrag 1302008)
Was mache ich falsch?

Nicht auf das hören, was dir der Compiler, Code-Insight und vorallem MSDN sagen?
https://msdn.microsoft.com/en-us/lib.../aa363851.aspx

siehe deine Windows/WinApi-Unit, welche der Compiler an der Stelle bestimmt zuerst findet. (Unitreihenfolge)

Strg+Linksklick auf den CopyFile-Aufruf und den Hint über CopyFile wird bestimmt auch Lazarus beherschen.

Der schöne Günther 18. Mai 2015 20:16

AW: CopyFile - komme über den Flag nicht weiter...
 
Deine Methode will TCopyFileFlags, du gibst ihr aber TCopyFileFlag

AlexII 18. Mai 2015 20:18

AW: CopyFile - komme über den Flag nicht weiter...
 
Zitat:

Zitat von himitsu (Beitrag 1302010)
Zitat:

Zitat von AlexII (Beitrag 1302008)
Was mache ich falsch?

Nicht auf das hören, was dir der Compiler, Code-Insight und vorallem MSDN sagen?
https://msdn.microsoft.com/en-us/lib.../aa363851.aspx

siehe deine Windows/WinApi-Unit, welche der Compiler an der Stelle bestimmt zuerst findet. (Unitreihenfolge)

Strg+Linksklick auf den CopyFile-Aufruf und den Hint über CopyFile wird bestimmt auch Lazarus beherschen.

Das ist hier aus der Unit...
Delphi-Quellcode:
// flags for copy
type
  TCopyFileFlag = (
    cffOverwriteFile,
    cffCreateDestDirectory,
    cffPreserveTime
    );
  TCopyFileFlags = set of TCopyFileFlag;

// Copy a file and a whole directory tree
function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;

AlexII 18. Mai 2015 20:21

AW: CopyFile - komme über den Flag nicht weiter...
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1302012)
Deine Methode will TCopyFileFlags, du gibst ihr aber TCopyFileFlag

Eeh... :gruebel: wo? Ich mache da selber nur das:
Delphi-Quellcode:
CopyFile('C:\test\test.txt', 'D:\testtest\.txt', cffCreateDestDirectory);

himitsu 18. Mai 2015 20:24

AW: CopyFile - komme über den Flag nicht weiter...
 
Das auch, aber eigentlich will Lazarus hier einen Boolean.

Windows kennt kein CopyDirTree also drängelt es sich nicht vor :angle2:




Mit Namespace aufrufen oder Uses umsortieren. :stupid:


[add]
Du gibst Enum und die Signatur will ein Set. :wink:

AlexII 18. Mai 2015 20:29

AW: CopyFile - komme über den Flag nicht weiter...
 
Zitat:

Zitat von himitsu (Beitrag 1302016)
Das auch, aber eigentlich will Lazarus hier einen Boolean.

Windows kennt kein CopyDirTree also drängelt es sich nicht vor :angle2:




Mit Namespace aufrufen oder Uses umsortieren. :stupid:

Pardo, war falsch... habs korrigiert. Es ist kein CopyDirTree sondern CopyFile.
Mit dem Namespace läufts, danke! :thumb:

idefix2 21. Mai 2015 09:48

AW: CopyFile - komme über den Flag nicht weiter...
 
Delphi-Quellcode:
function CopyFile(const SrcFilename, DestFilename: string; Flags: TCopyFileFlags=[cffOverwriteFile]): boolean;


procedure ....
begin
CopyFile('C:\test\test.txt', 'D:\testtest\.txt', cffCreateDestDirectory);
end;
Wie das auch mit Angabe des Namespace laufen kann, würde ich gerne wissen.
Kann man denn einer Prozedur an Stelle eines Set ein einzelnes Setelement als Parameter übergeben?
Das müsste doch heissen:
Delphi-Quellcode:
CopyFile('C:\test\test.txt', 'D:\testtest\.txt', [cffCreateDestDirectory]);

AlexII 21. Mai 2015 10:14

AW: CopyFile - komme über den Flag nicht weiter...
 
Bei mir läuft es nur wie folgt (Lazarus):

Delphi-Quellcode:
FileUtil.CopyFile(PChar(src), PChar(dest), [cffCreateDestDirectory]);

DualCoreCpu 22. Mai 2015 12:31

AW: CopyFile - komme über den Flag nicht weiter...
 
Zitat:

Zitat von AlexII (Beitrag 1302015)
Zitat:

Zitat von Der schöne Günther (Beitrag 1302012)
Deine Methode will TCopyFileFlags, du gibst ihr aber TCopyFileFlag

Eeh... :gruebel: wo? Ich mache da selber nur das:
Delphi-Quellcode:
CopyFile('C:\test\test.txt', 'D:\testtest\.txt', cffCreateDestDirectory);

Entweder in *.txt kopieren oder den Backslash im Zeildirectory korrekt schreiben.

Statt 'D:\testtext\.txt' -> 'D:\test\test.txt'


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