compresseur de fichier

Programmation d'applications complexes
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

surtous n'effacer pas vos version compresser, je vais examiner ça sans plus tarder
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

essayer ce code, ça devrait aller ce coup ci

Code : Tout sélectionner

Enumeration 

  #Open_Window_0 
  
EndEnumeration 


Enumeration 

  #ButtonImage_0 
  #ButtonImage_1 
  #Image0 
  #Image1 
  
EndEnumeration 



Repeat 

  Repeat 

    Clr01=RGB(Random(255),Random(255),Random(255)) 
    Clr02=RGB(Random(255),Random(255),Random(255)) 

  Until Clr01<>Clr02 
  
  Clr01$=Hex(Clr01) 
  Clr02$=Hex(Clr02) 

  Clr01=Val(Clr01$) 
  Clr02=Val(Clr02$) 

Until Clr01> 10000 Or Clr02> 10000 



If CreateImage(#Image0,125,40) 

  StartDrawing(ImageOutput(#Image0)) 
  Box(0,0,125,40,Clr02) 
  DrawText(12,13,"COMPRESSER",Clr01,Clr02) 
  StopDrawing() 

  If CreateImage(#Image1,125,40) 
  
    StartDrawing(ImageOutput(#Image1)) 
    Box(0,0,125,40,Clr02) 
    DrawText(5,13,"DECOMPRESSER",Clr01,Clr02) 
    StopDrawing() 
    
  EndIf 
    




EndIf 



Procedure Open_Window_0() 

  If OpenWindow(#Open_Window_0, 587, 340, 265, 60, "   ..::_FORTIX_COMPACT_FILE_::.. ",  #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar ) 
  
    If CreateGadgetList(WindowID(#Open_Window_0)) 
    
      ButtonImageGadget(#ButtonImage_0, 5, 10, 125, 40, ImageID(#Image0)) 
      ButtonImageGadget(#ButtonImage_1, 135, 10, 125, 40, ImageID(#Image1))    
      
    EndIf 
    
  EndIf 
  
EndProcedure 



Open_Window_0() 



SetWindowColor(#Open_Window_0, Clr01) 
GadgetToolTip(#ButtonImage_0, "Appuyer ici pour ouvrir et compresser un fichier.") 
GadgetToolTip(#ButtonImage_1, "Appuyer ici pour ouvrir et décompresser un fichier (*.FCF).") 



Repeat 
  
  EventID = WaitWindowEvent() 
    
  If EventID = #PB_Event_Gadget 

    Select EventGadget() 
        
      Case #ButtonImage_0 
      
        Repeat 
        
          fichier_comp$ = OpenFileRequester("Fichier à compresser","","tout sauf  '*.FCF' (Fortix_Compact_Format)|*.*",0) 
          
          If GetExtensionPart(fichier_comp$)="FCF" 
          
            f=0 
            
          Else 
          
            f=1 
            
          EndIf 
          
        Until f=1 
            
          If fichier_comp$ 
            
          CreatePack(fichier_comp$+".FCF")  
          AddPackFile(fichier_comp$,9) 
          ClosePack() 
          Chemin$ = GetPathPart(fichier_comp$) 
          Fichier$ = GetFilePart(fichier_comp$) 
              
          Repeat 
          
            Delay(1) 
                    
            If ExamineDirectory(0,Chemin$,Fichier$+".FCF") 
            
              buffer$ = Space(#MAX_PATH) 
              buffer$ =fichier_comp$+".FCF"  
              SetFileAttributes_(@buffer$,#FILE_ATTRIBUTE_READONLY);:Debug "protegé"              
                      
              If DeleteFile(fichier_comp$) 
                  
                FinishDirectory(0) 
                t=1 
                          
              EndIf 
                        
            EndIf 
                        
          Until t=1 
              
        EndIf 
                    
      Case #ButtonImage_1 
        
        fichier_decomp$ = OpenFileRequester("Selection du fichier à decompresser","","'*.FCF' (Fortix_Compact_Format)|*.FCF",0 ) 
            
        If fichier_decomp$ 
          
          Chemin0$ = GetPathPart(fichier_decomp$) 
          Fichier0$ = GetFilePart(fichier_decomp$) 
          
          ExamineDirectory(0, Chemin0$, Fichier0$)          
          NextDirectoryEntry(0) 
          attrib0=GetFileAttributes(fichier_decomp$) 

          
          ;If attrib0  &  #PB_FileSystem_Compressed And attrib0  &  #PB_FileSystem_ReadOnly;:Debug attrib0    
          
            buffer$ = Space(#MAX_PATH) 
            buffer$ = fichier_decomp$              
            SetFileAttributes_(@buffer$,#FILE_ATTRIBUTE_NORMAL);:Debug "plus protegé" 
            FinishDirectory(0)            
                        
            If OpenPack(fichier_decomp$) 
            
              memoire = NextPackFile() 
              taille = PackFileSize() 
              fichier_decomp2$=ReplaceString(fichier_decomp$,".FCF","    ") 
                
              If fichier_decomp2$ 
                
                If CreateFile(0,fichier_decomp2$) 
                  
                  WriteData(0,memoire,taille) 
                  CloseFile(0) 
                  ClosePack() 
                  Chemin$ = GetPathPart(fichier_decomp2$) 
                  Fichier$ = GetFilePart(fichier_decomp2$) 
  
                  Repeat 
                  
                    Delay(1) 
                      
                    If ExamineDirectory(0,Chemin$,Fichier$) 
                      
                      If DeleteFile(fichier_decomp$) 
                      
                        FinishDirectory(0) 
                        s=1 
                          
                      EndIf 
                          
                    EndIf 
                          
                  Until s=1 
                      
                EndIf 
                      
              EndIf 
                    
            EndIf 
                
          ;EndIf 
          
        EndIf 
          
    EndSelect 
  
  EndIf 
    
Until EventID = #PB_Event_CloseWindow 

CloseWindow(#Open_Window_0) 

End 

j'insiste malgré touts: il ne faut pas renommer le fichier une fois compréssé
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Voilà, on y ait :

récuperez le code ainsi corrigé(juste au dessus)

puis compilez le et decompresser votre fichier dernierement compressé

je l'ais reessayé chez moi et il fonctionne impec :D


Désolé pour cette incident

à l'avenir, je vérifirais 10 fois mon code avant de le poster :lol:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Je confirme, la décompression fonctionne au poil comme ça :D
Merci pour la correction
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

A ton service, puis je pense que s'était un minimum de corriger au moin ses érreurs ,

mais je souhaiterais que Mr Kwai chang caine récupère la correction du code afin qu'il puisse lui aussi récupérer son fichier compréssé et qu'il me tient au courant, ainsi, je pourrais avoir l'esprit tranquil :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message par Kwai chang caine »

Bravo Mr Fortix t'es un champion :wink:

J'avais pensé a garder le fichier compréssé et a ne plus rien toucher.
ça marche, j'ai récupéré mon original et je t'en remercie.
Tu peux avoir l'esprit tranquille.
Ton soucis démontre ton professionalisme et je t'en remercie.

A la limite si je peux me permettre un conseil, ce serait juste une petite option, "Effacer l'original oui / non" ça permettrait d'éviter ce genre de probleme, car au cas ou le fichier est méga important et que par malheur le code plante au milieu pour je ne sais quelle raison, l'utilisateur n'a pas la désagreable surprise de voir son super vital fichier disparaitre sans son consentement :?

Encore bravo et merci.
Avatar de l’utilisateur
Fortix
Messages : 559
Inscription : mar. 30/mai/2006 17:03

Message par Fortix »

Ok tout beigne alors :D
Répondre