Problême de packer

Programmation d'applications complexes
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Problême de packer

Message par Cagou-77 »

Denis, j'abuse de toi .

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" )
Il plante là : Taille_Reelle.s = PeekS(AdresseMemoire)
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
julien
Messages : 846
Inscription : ven. 30/janv./2004 15:06
Contact :

Message par julien »

Essaye ceci

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)

         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)
               If CreateFile(#FicherCourant, NomFichier) ; on crée le fichier vide sur le disque
               CloseFile(#FicherCourant) ; on ferme le fichier
               EndIf 
               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" ) 
Répondre