HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Állományok mozgatását végrehajtó komponens készítése


Példaprogram letöltése

5530 bájt

A MoveFile komponens segítségével állományokat mozgathatunk úgy, hogy a műveletet befolyásoló paramétereket mi állíthatjuk be és a műveletek állapotát folyamatosan nyomon követhetjük például egy ProgressBar segítségével. Lehetőségünk van arra is, hogy egy állományt kijelöljünk mozgatásra úgy, hogy annak helye ne változzon meg egészen a számítógép újraindulásáig.

A komponens OldName és NewName tulajdonságaiban kell megadnunk az állomány régi és új nevét, az elérési utakkal együtt.
Az Options tulajdonság logikai értékeket tartalmaz, melyek közül egyszerre többet is bekapcsolhatunk. Egy érték akkor van bekapcsolva, ha igazra állítjuk. Az értékek a következők:
Tulajdonság Hatás
COPY_ALLOWED A mozgatás két fázisban történik. A rendszer a mozgatást egy másolással és egy törléssel valósítja meg.
DELAY_UNTIL_REBOOT A mozgatás csak akkor jön létre, amikor a rendszer újraindul. Hatástalan, ha a COPY_ALLOWED be van kapcsolva.
REPLACE_EXISTING A már létező célállomány felülírása.
WRITE_THROUGH Gondoskodik arról, hogy a másolási művelet végén a teljes állomány ki legyen írva lemezre a memóriából. A DELAY_UNTIL_REBOOT-al együtt hatástalan.
Miután a mozgatás paramétereit beállítottuk, meg kell hívnunk a Move metódust.
function Move: Boolean;
A függvény visszatérési értéke igaz, ha a művelet végrehajtható volt.
A komponens OnMove eseménye minden egyes alkalommal lefut, amikor egy áthelyezés alatt álló állomány legalább egy százaléknyi része átmásolásra kerül. Így ez az esemény maximum százszor fut le.
A komponenst a TComponent osztályból származtatjuk. Hogy az Option tulajdonság választható elemeket tartalmazzon, az alábbi típusdeklarációt kell elvégeznünk:
TOption=(COPY_ALLOWED, DELAY_UNTIL_REBOOT, REPLACE_EXISTING, WRITE_THROUGH);
TOptions= set of TOption;
Így az Options tulajdonság TOptions típusú lesz.
A mozgatás végrehajtásához a MoveFileWithProgress API függvényt használjuk. A függvényben megadható paraméterek típusa Cardinal, ezért a bejelölt elemeket egy ilyen típusú változó segítségével adjuk át paraméterként. Ehhez létre kell hoznunk a Flags változót, amelynek tartalmához minden egyes bejelölt elem esetén hozzáadjuk annak a rendszer által definiált értékét.
if COPY_ALLOWED in FOptions then Flags:=Flags+MOVEFILE_COPY_ALLOWED;
A MoveFile függvény és paraméterei.
MoveFileWithProgress(PChar(FOldName),PChar(FNewName),@Progress,Self,Flags);
A függvény harmadik paramétere maga is egy függvény, melyre a @ cím operátor segítségével hivatkozhatunk. A Progress függvény paraméterlistája kötött, ezt a MoveFileWithProgress határozza meg. A negyedik paramétert megkapja a Progress függvény. Itt tudjuk átadni neki magát a TMoveFile objektumot, amely az lpData változóba kerül.
function Progress(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: LARGE_INTEGER;
  dwStreamNumber, dwCallbackReason: DWORD; hSourceFile, hDestinationFile: THANDLE; lpData: Pointer): DWORD; stdcall;
Ez a függvény minden egyes alkalommal lefut, amikor a fájl egy újabb része áthelyezésre kerül. A Progress függvényben kell gondoskodnunk az OnMove esemény lefutásáról. Annak minden egyes alkalommal le kell futnia, amikor legalább egy százalékos változás történik.
if i*100>Percent then begin
  if Assigned(MF.OnMove) then MF.OnMove(MF);
  Inc(Percent);
end;  
A MoveFileWithProgress függvény visszatérési értékét adjuk vissza a Move függvény visszatérési értékeként.

Cikksorozat

#IDKategóriaCikk címeSorozat
1099DelphiDBChart komponens felhasználása1. rész
1113DelphiTDBChart komponens2. rész
1122DelphiTDBChart komponens3. rész
1132DelphiTDBChart komponens4. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: Delphi Software Offline 2002 évkönyv 748. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |