Hi
Ich habe vor ein paar Tagen eine DLL geschrieben, um Dateien mit dem Game Maker zu kopieren.
Ihr denkt jetzt sicher dass geht doch auch so. Natrlich, aber mit Hilfe dieser DLL kann man auch
den Fortschritt des Kopiervorgangs bei greren Dateien im GM Fenster anzeigen lassen. ZB. fr einen
Fortschrittsbalken. Eigentlich hab ich die DLL fr meinen Explorer geschrieben, den ich gerade mit dem
Game Maker baue. Ich dachte ich lade sie mal hier hoch. Vielleicht braucht sie ja noch jemand. :-)

Nach dem Initialisieren der DLL durch fCopy_Init(); kann festgelegt werden, wieviele Bytes pro Aufruf der
fCopy_Proceed() Funktion kopiert werden sollen. Der Standardwert ist 2000. Wenn eine Datei also kleiner als
2000 Bytes ist, wird sie beim ersten Aufruf der Funktion komplett kopiert. Ist sie grer, so muss die Funktion fter
aufgerufen werden. Mehr dazu weiter unten. Umso grer dieser Wert ist, desto schneller geht der Kopiervorgang. Allderdings
wird die Positionsrckgabe dann in greren Zeitabstnden durchgefhrt. Das muss man einfach ausprobieren.
Ein guter Wert liegt zwischen 6000 und 10000. Maximal kan man 65535 angeben. Dieser Wert wird im fCopy_Init() Script
eingestellt.

Allgemein funktioniert die DLL in drei Schritten:

1. Aufruf einer Funktion zum Starten des Kopiervorgangs. Dabei werden die Dateinamen bergeben.
   Diese Funktion gibt dann die Dateigre der zu kopierenden Datei zurck. Zum Beispiel so:

   fSize = fCopy_Start("Test.txt", "Test2.txt");

2. Die eigentliche Prozessfunktion wird nun so oft aufgerufen, bis alle Bytes kopiert wurden. Diese
   Funktion gibt jedes mal die neue Position zurck, also die Bytes, die bisher kopiert wurden.
   In einer while Schleife berprft man also, ob die Position noch kleiner ist als die Dateigre und
   ruft in diesem Fall die Prozessfunktion auf. Das sieht dann so aus:

   while (Pos < fSize)
   {
       Pos = fCopy_Proceed();
       screen_redraw();
   }

   Das screen_redraw() ist dafr da, dass der Bildschirm aktualisiert wird und der korrekte Fortschritt angezeigt wird.

3. Nach jedem Kopiervorgang mssen die Dateien wieder geschlossen werden. Dies geht mit dieser Funtkion:

   fCopy_Finish();



Die DLL darf frei verwendet werden. Credits sind nicht unbedingt notwendig.
Wrde mich aber freuen. Hoffe ihr knnt sie brauchen.

(C) Copyright 2010, Peini Games
All Rights reserved.