j'ai le code suivant qui plante :
Code : Tout sélectionner
#FicherCourant = 1
Procedure.l Decompresse(FichierCompresser$)
If OpenPack(FichierCompresser$)
NomChemin$ = "D:\PureBasic\Nouveau Projet\Packer\"
NomFichier.s = Space(256) ; crée la variable chaine qui récupèrera le nom de fichier courant
AdresseMemoire = NextPackFile() ; On récupère le premier élément compressé, c'est-à-dire le nom du fichier
Fichiers_DeCompresser = 0
While AdresseMemoire ; on débute la boucle
NomFichier = PeekS(AdresseMemoire) ; récupère le nom de fichier en situé en mémoire
AdresseMemoire = NextPackFile() ; récupère la taille du fichier à décompresser
Taille_Reelle.s = PeekS(AdresseMemoire)
; AdresseMemoire = NextPackFile() ; récupère la date et l'heure du fichier à décompresser
; DateFichier.s = PeekS(AdresseMemoire)
If Val(Taille_Reelle) ; on extrait uniquement si la taille > 0
AdresseMemoire = NextPackFile() ; récupère l'adresse du fichier à décompresser
Taille = PackFileSize() ; récupère la taille du fichier à décompresser
If NomChemin$ <> "" And AdresseMemoire
NomFichier = NomChemin$ + GetFilePart(NomFichier)
CreateFile(#FicherCourant, NomFichier) ; on crée le fichier sur le disque
WriteData(AdresseMemoire, Taille ) ; on écrit le contenu du fichier
CloseFile(#FicherCourant) ; on ferme le fichier
Fichiers_DeCompresser + 1
Debug NomFichier
EndIf
Else ; le fichier est vide donc à créer puisqu'il n'est pas dans l'archive
If NomChemin$ <> ""
NomFichier = NomChemin$ + GetFilePart(NomFichier)
CreateFile(#FicherCourant, NomFichier) ; on crée le fichier vide sur le disque
CloseFile(#FicherCourant) ; on ferme le fichier
Fichiers_DeCompresser + 1
EndIf
EndIf
AdresseMemoire = NextPackFile() ; on continue l'opération tant que adresseMemoire est différent de 0
Wend
ClosePack() ; ferme le pack
ProcedureReturn 1
Else
MessageRequester("Erreur", "OpenPack a échoué", 16)
EndIf
ProcedureReturn 0
EndProcedure
Result = CreatePack("411001.Ng")
Debug result
If Result
AddPackFile( "Classeur.dbf", 6)
EndIf
ClosePack() ; ferme le pack
Debug Decompresse( "411001.Ng" )
DeleteFile( "411001.Ng" )
le message est le suivant : speciefied address is null
le pack est bien créer je pense que le fichier est archivé car 51ko de taille de l'archive
mais lorsque je veut l'ouvrir : plantage
peut-tu m'aider .
merci d'avance