Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben
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...

Geschrieben

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???

Geschrieben
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.
Geschrieben
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 :(

Geschrieben

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]

Geschrieben

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);

}

Geschrieben
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?

Geschrieben
Ä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....

Geschrieben
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.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...