Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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

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

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

Hast du das gemacht?

Ja, hab es so definiert:

#define _WIN32_WINNT 0x0400

Bringt aber immernoch die Meldung:

'CopyFileEx' : nichtdeklarierter Bezeichner

Wo?

Hast du noch andere defines gesetzt?

Habs ganz oben unter den includes gestezt. sonst hab ich keine defines

Nicht gut ;)

sondern? :confused:

habs jetzt direkt in die Funktion gesetzt, geht aber trotzdem nicht

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

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]

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

}

Also ich weiß nicht genau wie ich das jetzt prüfen soll ob die Datei vollständig kopiert wurde... :(

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?

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

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.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.