Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi CopyFileEx: dwCopyFlags werden nicht erkannt (https://www.delphipraxis.net/169336-copyfileex-dwcopyflags-werden-nicht-erkannt.html)

hans ditter 12. Jul 2012 18:42

CopyFileEx: dwCopyFlags werden nicht erkannt
 
Moin moin!

Ich hab mich mal nach diesem Thread an über CopyFileEx informiert und natürlich MSDN befragt.
CopyFileEx funktioniert soweit sehr gut. Ich würde nur gerne die dwCopyFlags (in der Tabelle bei MSDN nachlesbar) setzten und da hat mein Delphi (Turbo Delphi) ein Problem mit.

Einige dieser Konstanten kennt mein Delphi (z.B. COPY_FILE_FAIL_IF_EXISTS, COPY_FILE_RESTARTABLE), die meisten aber nicht (z.B. COPY_FILE_NO_BUFFERING, COPY_FILE_OPEN_SOURCE_FOR_WRITE,....).

Ich würd allerdings gerne den COPY_FILE_NO_BUFFERING-Flag setzten... aber wie gesagt, schmeißt mir Turbo Delphi dann einen Fehler entgegen, dass dieser Term unbekannt sei. Hier hab ich über Google ("delphi COPY_FILE_NO_BUFFERING konstante") die Unit sdaWindows.pas gefunden und versucht die in meine uses-Klausel einfach mal aufzunehmen... aber leider kennt Delphi auch diese Unit nicht.

Muss ich für die unbekannten Konstanten von CopyFileEx jetzt noch eine Unit runterladen oder die irgendwo selber definieren oder muss ich nur noch eine bestimmte Unit mit einbinden?

Vielen Dank und LG; hans ditter

DeddyH 12. Jul 2012 18:51

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Wenn Dein Delphi sie noch nicht kennt, musst Du sie selbst definieren, der Wert müsste ja im MSDN stehen.

messie 12. Jul 2012 18:56

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Zitat:

Zitat von DeddyH (Beitrag 1174528)
Wenn Dein Delphi sie noch nicht kennt, musst Du sie selbst definieren, der Wert müsste ja im MSDN stehen.

Oder den DWORD-Wert aus MSDN direkt übergeben. Wenn einige flags bekannt sind, dann kann die Funktion auch mehr.
Einige Flags werden scheinbar erst ab Vista unterstützt.

DeddyH 12. Jul 2012 18:59

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Magic Numbers? *Bäh*

hans ditter 12. Jul 2012 19:00

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Heißt das, ich müsste jetzt für COPY_FILE_NO_BUFFERING das so definieren:
Delphi-Quellcode:
const COPY_FILE_NO_BUFFERING = 0x00001000;
bzw. CopyFileEx gleich mit 0x00001000 aufrufen?

Nebenbei, OS ist schon Vista... ist nur mein Delphi was etwas in die Tage gekommen ist. ;)

messie 12. Jul 2012 19:01

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Zitat:

Zitat von DeddyH (Beitrag 1174530)
Magic Numbers? *Bäh*

Tschuldigung, habe gerade in C programmiert und vergessen, dass es Hochsprachen gibt :P

DeddyH 12. Jul 2012 19:05

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
In C gibt es doch auch Konstanten, zumindest defines, oder habe ich das falsch in Erinnerung?
@hans:
Delphi-Quellcode:
const
  COPY_FILE_NO_BUFFERING = $00001000;

messie 12. Jul 2012 19:15

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Zitat:

Zitat von DeddyH (Beitrag 1174534)
In C gibt es doch auch Konstanten, zumindest defines, oder habe ich das falsch in Erinnerung

Ja.
Aber wenn Du inmitten von großen Eimern voll * und -> sitzt, greifst Du manchmal gerne zu einer Zahl. Die ist etwas Begreifbares. :lol:

hans ditter 12. Jul 2012 19:22

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
:shock: Jetzt geht's gar nicht mehr!!

Ich hab CopyFileEx jetzt mit $0000100 für die dwCopyFlags aufgerufen (ich weiß, hässlich Nummer, aber war erstmal einfacher einzupflegen) und jetzt kopiert der gar nichts mehr. Die Funktion gibt 0 zurück, also ist ein Fehler aufgetreten...

Wie kommt das denn jetzt zustande?

DeddyH 12. Jul 2012 21:20

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Die 1 steht an der falschen Stelle, nicht $00000100, sondern $00001000.

himitsu 12. Jul 2012 21:47

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Zitat:

Zitat von hans ditter (Beitrag 1174537)
Wie kommt das denn jetzt zustande?

MSDN-Library durchsuchenCopyFileEx / MSDN-Library durchsuchenGetLastError / Delphi-Referenz durchsuchenSysErrorMessage / Delphi-Referenz durchsuchenRaiseLastWin32Error Delphi-Referenz durchsuchenRaiseLastOSError

hans ditter 13. Jul 2012 15:16

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
@DeddyH
Danke für den Hinweis. Da könnt mir wirklich eine 0 abhanden gekommen sein... ;)

@himitsu
Werd's nächstes mal erst verwenden und dann fragen. Gut das du die entsprechenden Funktionen nochmal aufgschrieben hast... ich vergiss die immer wieder! ;)

himitsu 13. Jul 2012 15:26

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Manchmal sind die halt doch etwas hilfreich.
Ich vermute jetzt einfach mal, daß es dir eventuell was vonwegen "invalid parameter" gesagt hätte.


Hast du eigentlich die JCL installiert?
Dort findet man für Vieles schon fertig übersetzte Header, bzw. ganze Wrapperklassen.

hans ditter 13. Jul 2012 22:34

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
Ich werd's morgen mal ausprobieren. Danke nochmal. :)

Ich muss jetzt mal ganz blöd fragen: Was ist die JCL? Und muss man die manuell nachinstallieren oder ist die gleich mitgeliefert? Ich hab nämlich grade keine Ahnung, was das sein soll... werd das morgen mal googlen! :D

Gute Nacht; hans ditter

himitsu 13. Jul 2012 22:55

AW: CopyFileEx: dwCopyFlags werden nicht erkannt
 
JCL - Jedi Code Library (nicht visuelle Komponenten und sonstige Codes ... z.B. API-Header und sowas wie eine TStringList)
JVCL - Jedi Visual Code Library (visuelle Komponenten ... quasi sowas wie ein TMemo)

Das ist eine "kostenlose" Komponentensammlung, welche man allerdings selber installieren muß.

Bei Google suchenDelphi Jedi

Tschuldschung, ich war davon ausgegangen, daß wir auch für JCL und JVCL passende Akronyme hätten und nicht nur für Jedi (halte hier mal die Maus drüber).


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