Veröffentlicht 15. August 200520 j HILFE, PROBLEM! Ich kopiere eine ZIP-Datei über das Netzwerk mit CopyFile. Die Datei ist 20 MB groß und es dauert ein paar Sekunden bis es kopiert ist. Das Programm möchte jetzt aber sofort nach dem CopyFile ausgeführt ist die Datei entpacken. Wie kann ich vorher prüfen, dass die Datei schon fertig kopiert ist??? Hat jemand eine Idee? Hab NULL ahnung LG, Filou
15. August 200520 j Bei CopyFileEx kannst du eine Callbackfunktion angeben, die aufgerufen wird, wenn ein Teil des Vorgangs abgeschlossen ist. Damit kannst du feststellen, wann die Datei kopiert ist.
15. August 200520 j Bei CopyFileEx kannst du eine Callbackfunktion angeben, die aufgerufen wird, wenn ein Teil des Vorgangs abgeschlossen ist. Damit kannst du feststellen, wann die Datei kopiert ist. Ok, ERSTMAL VIELN DANK FÜR DEINE ANTWORT! Was ist eine Callbackfunktion? Ich schaue mal in der MSDN nach wie das geht...
16. August 200520 j Ich habe die beiden Dateien "Winbase.h; include Windows.h" eingebunden. Aber die Funktion "CopyFileEx" ist nicht bekannt obwohl das Studio soragr die Paramtere Vorschlägt wenn wen "CopyFileEx(" eingebe... Woaran liegt das denn???
16. August 200520 j To compile an application that uses this function, define the _WIN32_WINNT macro as 0x0400 or later. For more information, see Using the SDK Headers. Hast du das gemacht?
16. August 200520 j Hast du das gemacht? Ja, hab es so definiert: #define _WIN32_WINNT 0x0400 Bringt aber immernoch die Meldung: 'CopyFileEx' : nichtdeklarierter Bezeichner
16. August 200520 j Ja, hab es so definiert: #define _WIN32_WINNT 0x0400 Wo? Hast du noch andere defines gesetzt?
16. August 200520 j Wo? Hast du noch andere defines gesetzt? Habs ganz oben unter den includes gestezt. sonst hab ich keine defines
16. August 200520 j Nicht gut sondern? :confused: habs jetzt direkt in die Funktion gesetzt, geht aber trotzdem nicht
16. August 200520 j sondern? :confused: Dieses Präprozessorsymbol wird in winbase.h abgefragt. Wenn du es erst setzt, nachdem winbase.h abgearbeitet wurde, ist die Wirksamkeit begrenzt. Die define-Direktive muss vor die include-Direktive.
16. August 200520 j Dieses Präprozessorsymbol wird in winbase.h abgefragt. Wenn du es erst setzt, nachdem winbase.h abgearbeitet wurde, ist die Wirksamkeit begrenzt. Die define-Direktive muss vor die include-Direktive. Ok, jetzt habe ich es ganz an den Anfang kopiert... aber die Funktion CopyFileEx ist weiterhin unbekannt
16. August 200520 j Benutzt du vorkompilierte Header (stdafx.h)? Falls ja: Setz die define-Direktive da rein, vor alle include-Direktiven. Falls nicht: Akzeptiert dein Compiler das hier? #define _WIN32_WINNT 0x400 #include <windows.h> int main() { CopyFileEx(0, 0, 0, 0, 0, 0); }[/code]
16. August 200520 j Ok, danke, danke!!! jetzt funktionierts Aber jetzt bekomme ich die Fehlermeldung "Funktion akzeptiert keine 4 parameter" dabei werde sogar in der AutoHilfe 4 angegeben. Schau mal bitte, ich habs so gemacht: void CKopierenDlg::Kopieren() { //Callback Routine um zu überprüfen wann die Datei fertig kopiert wurde DWORD CALLBACK CopyProgressRoutine( LARGE_INTEGER TotalFileSize, LARGE_INTEGER TotalBytesTransferred, LARGE_INTEGER StreamSize, LARGE_INTEGER StreamBytesTransferred, DWORD dwStreamNumber, DWORD dwCallbackReason, HANDLE hSourceFile, HANDLE hDestinationFile, LPVOID lpData); m_csStatus = "Neue Dateien werden herruntergeladen."; _mkdir("C:\\ifbtemp");//Verzeichnis erstellen BOOL X = CopyFileEx( "\\\\10.50.100.1\\gemeinsam\\tis_info\\tisupdate\\rar.exe","C:\\ifbtemp\\rar.exe",CopyProgressRoutine,COPY_FILE_FAIL_IF_EXISTS); }
16. August 200520 j Also ich weiß nicht genau wie ich das jetzt prüfen soll ob die Datei vollständig kopiert wurde...
16. August 200520 j CopyFileEx braucht 6 Parameter. Sagt jedenfalls die MSDN Library. Warum deklarierst du die Callbackfunktion in der Kopieren-Methode?
16. August 200520 j CopyFileEx braucht 6 Parameter. Sagt jedenfalls die MSDN Library. Warum deklarierst du die Callbackfunktion in der Kopieren-Methode? Na ich weiß nicht so genau was diese Callbackfunktion macht. Ich denke mal da gibt es einen Parameter der mir sagt, wann es fertig kopiert hat und den muss ich dann wieder abfragen. und dazu muss er doch in der Funktion sein, in der ich prüfen will ob es fertig kopiert hat, oder?
16. August 200520 j Äh, bist du wirklich sicher, dass CopyFile zurückkommt, bevor die Datei komplett kopiert wurde? Ich hab da meine Zweifel, und werde das gleich mal testen.
16. August 200520 j Also MoveFile wartet definitiv bis das Verschieben abgeschlossen ist, deshalb würde ich sagen das CopyFile das auch macht...
16. August 200520 j Äh, bist du wirklich sicher, dass CopyFile zurückkommt, bevor die Datei komplett kopiert wurde? Ich hab da meine Zweifel, und werde das gleich mal testen. Also ich hab immer nur auf das LED meiner Festplatte geschaut und die hat immer noch schwer geschuftet obwohl das Programm schon am haltepunkt angekommen ist. Das Programm soll später Dateien über das Internet kopieren und da wird das sicherlich länger dauern....
16. August 200520 j Also ich hab immer nur auf das LED meiner Festplatte geschaut und die hat immer noch schwer geschuftet obwohl das Programm schon am haltepunkt angekommen ist.Das lag dann aber nicht an CopyFile. Bei mir kommt der Aufruf erst dann zurück, wenn die Datei kopiert wurde.
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.