1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
|
PROCEDURE PRIVÉE Local_CopieFichier(cpSource est une chaîne,cpDestination est une chaîne,epTaille est un entier sur 8 octets)
LOCAL
dpDateSource est une DateHeure
dpdateDest est une DateHeure
dpdateDestPlusSec est une DateHeure
dpdateDestMoinsSec est une DateHeure
//Copie
bpCopie est un booléen
cpEtoile est une chaîne = Répète("#",5)
CopyFileExA est une Description d'API
dpDuréeAPI est une Durée
oRapport:TraceExecution("CopieFichier",cpEtoile+"fDateHeure")
dpDateSource = fDateHeure(cpSource,"",fModification)
SI dpDateSource = "" ALORS
oRapport:Suivit(ErreurInfo(errMessage))
RENVOYER(-1)
FIN
ogpApplication:LocalDestinationEnCours = cpDestination
ogpApplication:LocalSourceEnCours = cpSource
ogpApplication:LocalTailleEnCours = epTaille
SI :bComparaisonDateModification _ET_ fFichierExiste(cpDestination) ALORS
dpdateDest = fDateHeure(cpDestination,"",fModification)
dpdateDestPlusSec = dpdateDest
dpdateDestMoinsSec= dpdateDest
dpdateDestPlusSec..Seconde++
dpdateDestPlusSec..Seconde++
dpdateDestMoinsSec..Seconde--
dpdateDestMoinsSec..Seconde--
SI dpDateSource = dpdateDest OU (dpDateSource >= dpdateDestMoinsSec ET dpDateSource <= dpdateDestPlusSec ) ALORS
:eTailleEnCours += epTaille
eNbFichierRestant--
SysIconeModifie(ICONE_ORTHOSAVE,"Sauvegarde en cours..... ("+ NumériqueVersChaîne(((:eNbFichier-:eNbFichierRestant)*100/:eNbFichier),"03.1f")+"%)")
pProgression(:eNbFichier-:eNbFichierRestant)
Multitâche()
RENVOYER(0)
FIN
FIN
oRapport:TraceExecution("CopieFichier",cpEtoile+"Début Copie")
CopyFileExA..NomDLL = "kernel32"
CopyFileExA..NomFonction = "CopyFileExA"
CopyFileExA..TypeRetour = apiBooléen
CopyFileExA..Paramètre[1]..Type = apiEntierSystème
CopyFileExA..Paramètre[2]..Type = apiEntierSystème
CopyFileExA..Paramètre[3]..Type = apiEntierSystème
CopyFileExA..Paramètre[4]..Type = apiEntierSystème
CopyFileExA..Paramètre[5]..Type = apiEntierSystème
CopyFileExA..Paramètre[6]..Type = apiEntierSystème
APIParamètre(apiDéchargeDLL,Faux)
APIParamètre(apiRestaureParamètresSystème,Faux)
//Résultat booléen = AppelDLL32("KERNEL32","CopyFileExA",Fichier source,fichier destination,&procédure coolback,&Data à transférer à la coolback,Indicateur de cancel,flag de copie)
//bpCopie = AppelDLL32("KERNEL32","CopyFileExA",&cpsource,&cpDestination,null,null,null,0x00001000) //COPY_FILE_NO_BUFFERING
ChronoDébut(100)
bpCopie = CopyFileExA(&cpSource,&cpDestination,&CopyProgressCallBack,Null,Null,0x00001000)
dpDuréeAPI = ChronoFin(100)
ChronoDébut(100)
bpCopie = Local_CopieSystemIO(cpSource,cpDestination,epTaille)
dpDuréeNET = ChronoFin(100)
Info("API: "+dpDuréeAPI,"NET : "+dpDuréeNET)
SI bpCopie ALORS fDateHeure(cpDestination,dpDateSource,fModification)
oRapport:TraceExecution("CopieFichier",cpEtoile+"Sortie Copie : "+bpCopie)
Multitâche()
:eTailleEnCours += epTaille
eNbFichierRestant--
SysIconeModifie(ICONE_ORTHOSAVE,"Sauvegarde en cours..... ("+ NumériqueVersChaîne(((:eNbFichier-:eNbFichierRestant)*100/:eNbFichier),"03.1f")+"%)")
pProgression(:eNbFichier-:eNbFichierRestant)
SI PAS bpCopie ALORS
RENVOYER(-1)
SINON
RENVOYER(0)
FIN |
Partager