[resolu] GUI utilisant rar.exe

Programmation d'applications complexes
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

[resolu] GUI utilisant rar.exe

Message par Ar-S »

RESOLU

;Voir à la fin des posts
-----------------------------------------

Voilà mon problème :

- Je voudrais remplacer Fichier$="simpson.mpg" par un Fichier$=OpenFileRequester qui prendrait en compte le fichier parcouru (et son emplacement !)

Je pense que le probleme est que mon runprogram pense que fichier$ se trouve dans le meme repertoire que rar.exe, ce qui n'est evidement pas le cas.
Dernière modification par Ar-S le sam. 16/juin/2007 14:01, modifié 9 fois.
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Bonjour,
n'y a - t -il pas un caractère en trop dans le -v=95m ?

Je noterais plutôt ceci :

rar.exe a -s -hpmot_de_passe -m0 -v95m archive_de_sortie grosfichier_original.mpg

Par ailleurs voici une bon post sur l'utilisation de la ligne de commande WinRar : Ligne de commande WinRar
(Je viens tout juste de voir que tu avais posté là-bas également !)

Cordialement,
Cls
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Arf !! merci CLS !! c'etait effectivement ce = en trop !
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Hum...
Maintenant c'est ma command runprogram que j'arrive pas à ajuster..
Voilà mon code complet (version simplifié) :

Code : Tout sélectionner

;Le GUI Winrar par AR-S
;Gui pour automatiser un decoupage encryptée de gros fichiers
Enumeration
  #Fenettre
EndEnumeration
;}

;{ Gadgets
Enumeration
  #Bouton_Ouvrir
EndEnumeration
  ;}
  
  ;{-mes textes---------------
ok$="Fichiers découpés avec succés"
zobi$="Probleme"
intro$="Bienvenue dans le Winrar RS Decoupator"
;} 

Procedure OpenWindow_Fenettre()
  If OpenWindow(#Fenettre, 447, 505, 390, 178, "Winrar RS Decoupator", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_BorderLess)
    If CreateGadgetList(WindowID(#Fenettre))
        ButtonGadget(#Bouton_Ouvrir, 0, 120, 390, 25, "Cliquer pour effectuer l'operation")
    EndIf
  EndIf
EndProcedure

;- La Boucle
OpenWindow_Fenettre()
;MessageRequester ("info",intro$) ; Pour afficher un petit message d'intro
;{ boucle
Repeat

Event = WaitWindowEvent()
  Select Event
  Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      
      If  EventGadget = #Bouton_Ouvrir
          rar$="rar.exe"
          fichierpardefaut$="c:\"
          Filtre$ = "*.*|*.*"
          Filtre = 0
          Fichier$ = OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
          Parametre$="a -s -hp hptoto -m0 -v95m archive.rar "+fichier$
          If Fichier$
             ;If mdp$= GetGadgetText ( #MDP )
                If GadgetID = #Bouton_Ouvrir
                   RunProgram(rar$,parametre$,fichier$,1)   
                      MessageRequester ("info",ok$) 
                   Else
                      MessageRequester ("info",zobi$)
                     
                 EndIf
             ;EndIf
           EndIf
      EndIf
      ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Fenettre
        CloseWindow(#Fenettre)
        Break
      EndIf
  EndSelect
ForEver
 
Je suis loin d'être sur que la syntaxe juste pour mon runprogram et pour le contenu de la boucle repeat..
... Si vous pouviez m'éclairer..
:?

D'avance merci ;)
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Me revoilà,

J'avance doucement mais y'a du mieux..

Code : Tout sélectionner

Enumeration
  #Fenettre
  #OuvrirFichier
  #MDP
  #Nom_Archive
  #Boutonimage_about
  #Message_Affiche
  #Image_logo
  #Image_Image_1
  #Image_ButtonImage_1
  #Text_info
  #Text_Nom
EndEnumeration
  ;}
  
  ;{-mes textes---------------
ok$="Fichiers découpés avec succés"
zobi$="Probleme"
intro$="bienvenue"
;} 

;{ Image Plugins
UseJPEGImageDecoder()
;}

Procedure OpenWindow_Fenettre()
  If OpenWindow(#Fenettre, 447, 505, 390, 178, "Winrar RS Decoupator", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_BorderLess)
    If CreateGadgetList(WindowID(#Fenettre))
;- Le Bouton
        ButtonGadget(#OuvrirFichier, 0, 149, 355, 25, "Cliquer pour effectuer l'operation")
;- Les Boites
        EditorGadget(#Nom_Archive, 205, 95, 185, 20)
        EditorGadget(#MDP, 150, 120, 240, 20)
;- Les images
        ButtonImageGadget(#Boutonimage_about, 356, 149, 30, 25, CatchImage(#Image_ButtonImage_1, ?Image_ButtonImage_13))
        ImageGadget(#Image_logo, 1, 0, 355, 45, CatchImage(#Image_Image_1, ?Image_Image_1))
;- Les textes        
        TextGadget(#Message_Affiche, 0, 55, 390, 35, "Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo", #PB_Text_Border|#PB_Text_Center)
        TextGadget(#Text_Nom, 10, 98, 195, 20, "Entrer le nom des archives de sortie =>")
        TextGadget(#Text_info, 10, 122, 135, 20, "Entrer un mot de passe =>")
;Les couleurs des boutons et autre 
        PureCOLOR_SetGadgetColor(#Boutonimage_about, #PureCOLOR_SystemColor, #PureCOLOR_SystemColor)
        PureCOLOR_SetGadgetColor(#Text_info, $0, $1DCAE9)
        PureCOLOR_SetGadgetColor(#Text_Nom, $0, $1DCAE9)
        PureCOLOR_SetWindowColor(#Fenettre, $1DCAE9)
    EndIf
  EndIf
EndProcedure

;- La Boucle
OpenWindow_Fenettre()
;MessageRequester ("info",intro$) ; Pour afficher un petit message d'intro
;{ boucle
Repeat

Event = WaitWindowEvent()
  Select Event
  Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      mdp$= GetGadgetText ( #MDP )
      nom_archive$=GetGadgetText ( #Nom_Archive )
      If  EventGadget = #OuvrirFichier
          rar$="rar.exe"
          fichierpardefaut$="c:\"
          Filtre$ = "*.*|*.*"
          Filtre = 0
          Fichier$ ="simpson.mpg" ;OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
          Parametre$="a -s -hp"+mdp$+" -m0 -v95m "+nom_archive$ +" "+Fichier$
          If Fichier$        
            SetGadgetText(#Message_Affiche,"Opération en court")
            RunProgram(rar$,Parametre$,Fichier$,1,#PB_Program_Wait)   
            Delay(5000)
            SetGadgetText(#Message_Affiche,"Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo")
          Else
            MessageRequester ("info",zobi$)
          EndIf
       ElseIf EventGadget = #Boutonimage_about
          MessageRequester ( "A Propos" , "Winrar RS Decoupator réalisé par Ar-S"+Chr(10)+Chr(10)+"Plus de Logiciels sur http://arsworld.free.fr", 0)
       EndIf
      ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Fenettre
        CloseWindow(#Fenettre)
        Break
      EndIf
  EndSelect
ForEver
;}

DataSection ;>
  Image_Image_1:
  IncludeBinary "wrsd.jpg"
  Image_ButtonImage_13:
  IncludeBinary "about.jpg"
EndDataSection ;<
Si j'assigne un fichier précis, dans mon exemple simpson.mpg
lorsque je clique sur le bouton, ça marche nikel.

En revanche, si j'utilise Openfilerequester

Code : Tout sélectionner

Fichier$ =OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
Le soft ne fonctionne plus....

Je pige pas ! Image
KarLKoX
Messages : 1191
Inscription : jeu. 26/févr./2004 15:36
Localisation : France
Contact :

Message par KarLKoX »

Fait un SetCurrentDirectory_() vers le répertoire où se trouve rar.exe juste après l'appel du openfilerequester.
"Qui baise trop bouffe un poil." P. Desproges
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

J'ai fait un GetCurrentDirectory() à la place du SetCurrentDirectory et ça a
l'air de fonctionner.... J'ai aussi du ajouter un PathRequester

Je test ça et je continue.

Merci !! :P

----edit------
CODE MIS A JOUR 5/05/07 - 18h33

Voilà le code modifié qui fonctionne a peu prés..

Plus besoin de gros fichiers, plus besoin de compier l'exe dans le rep winrar...

Tout le necessaire est dans ce petit Zip

Et voici le code :

Code : Tout sélectionner

Enumeration
  #Fenettre
  #OuvrirFichier
  #MDP
  #Nom_Archive
  #Boutonimage_about
  #Message_Affiche
  #Image_logo
  #Image_Image_1
  #Image_ButtonImage_1
  #Text_info
  #Text_Nom
EndEnumeration
  ;}
  
  ;{-mes textes---------------
ok$="Fichiers découpés avec succés"
zobi$="Vous avez annulé"
intro$="bienvenue"
;} 

;{ Image Plugins
UseJPEGImageDecoder()
;}

Procedure OpenWindow_Fenettre()
  If OpenWindow(#Fenettre, 447, 505, 390, 178, "Winrar RS Decoupator", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_BorderLess)
    If CreateGadgetList(WindowID(#Fenettre))
;- Le Bouton
        ButtonGadget(#OuvrirFichier, 0, 149, 355, 25, "Cliquer pour effectuer l'operation")
;- Les Boites
        EditorGadget(#Nom_Archive, 205, 95, 185, 20)
        EditorGadget(#MDP, 150, 120, 240, 20)
;- Les images
        ButtonImageGadget(#Boutonimage_about, 356, 149, 30, 25, CatchImage(#Image_ButtonImage_1, ?Image_ButtonImage_13))
        ImageGadget(#Image_logo, 1, 0, 355, 45, CatchImage(#Image_Image_1, ?Image_Image_1))
;- Les textes        
        TextGadget(#Message_Affiche, 0, 55, 390, 35, "Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo", #PB_Text_Border|#PB_Text_Center)
        TextGadget(#Text_Nom, 10, 98, 195, 20, "Entrer le nom des archives de sortie =>")
        TextGadget(#Text_info, 10, 122, 135, 20, "Entrer un mot de passe =>")
;Les couleurs des boutons et autre 
        PureCOLOR_SetGadgetColor(#Boutonimage_about, #PureCOLOR_SystemColor, #PureCOLOR_SystemColor)
        PureCOLOR_SetGadgetColor(#Text_info, $0, $1DCAE9)
        PureCOLOR_SetGadgetColor(#Text_Nom, $0, $1DCAE9)
        PureCOLOR_SetWindowColor(#Fenettre, $1DCAE9)
    EndIf
  EndIf
EndProcedure

;- La Boucle
OpenWindow_Fenettre()
;MessageRequester ("info",intro$) ; Pour afficher un petit message d'intro
;{ boucle
Repeat

Event = WaitWindowEvent()
  Select Event
  Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      mdp$= GetGadgetText ( #MDP )
      nom_archive$=GetGadgetText ( #Nom_Archive )
      If  EventGadget = #OuvrirFichier
        StandardPath$ = "C:\"   ; set initial path to display (could also be blank)
        Path$ = PathRequester("Choisissez le repertoire source", StandardPath$)
        If Path$
          RepRar$ = GetCurrentDirectory()
          rar$=RepRar$+"rar.exe"
          fichierpardefaut$=path$
          Filtre$ = "*.*|*.*"
          Filtre = 0
          Fichier$ =OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
          Parametre$="a -s -hp"+mdp$+" -m0 -v95m "+Path$+nom_archive$ +" "+Fichier$
          If Fichier$  
           ;SetGadgetText(#Message_Affiche,"rar.exe "+Parametre$)    ; test de l'affichage correct des paramettres rar.exe   
           SetGadgetText(#Message_Affiche,"Patienter SVP")
           RunProgram(rar$,Parametre$,Fichier$,1)   
           SetGadgetText(#Message_Affiche,"Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo")
          Else
            MessageRequester ("info",zobi$)
          EndIf
        EndIf
       ElseIf EventGadget = #Boutonimage_about
          MessageRequester ( "A Propos" , "Winrar RS Decoupator réalisé par Ar-S"+Chr(10)+Chr(10)+"Plus de Logiciels sur http://arsworld.free.fr", 0)
       EndIf
      ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Fenettre
        CloseWindow(#Fenettre)
        Break
      EndIf
  EndSelect
ForEver
;}

DataSection ;>
  Image_Image_1:
  IncludeBinary "wrsd.jpg"
  Image_ButtonImage_13:
  IncludeBinary "about.jpg"
EndDataSection ;<
ça Fonctionne uniquement si il ni a pas d'espaces dans le nom de fichier (et repertoire je suposse)... Comment est-ce resolvable ?

Je suis sur qu'il y a pas mal d'autres maladresses, si vous pouvez me conseiller.
Je poursuis mes tests.
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Salut Ar-S,

voilà je poste un code fonctionnel (je n'ai pas remis la procedure codant l'interface ni l'enumeration).

Code : Tout sélectionner

;- Variables
Global PathToWinrar.s = "C:\Program Files\WinRAR\WinRar.exe"
Global DefautDirectory.s = "D:\" 

;- - Début du programme 
OpenWindow_Fenetre() 
 
Quit.l ; Variable quittant la boucle des évenements.
Repeat 

  Event = WaitWindowEvent() 
  
  Select Event 
    ; Un bouton a été pressé
    Case #PB_Event_Gadget 
  
      EventGadget = EventGadget() 
      EventType = EventType() 

      Select EventGadget  
     
        Case #OuvrirFichier ; Bouton d'ouverture du fichier
          mdp.s = GetGadgetText(#MDP) 
          Archive.s = GetGadgetText(#Nom_Archive) 
          
          Fichier.s = OpenFileRequester ("Choisissez le fichier à découper" , DefautDirectory ,"*.*|*.*", 0) 
          Fichier = Chr(34) + Fichier + Chr(34) ; Ajoute des guillemets " avant et après le nom de fichier
          
          If Fichier And Archive
            SetGadgetText(#Message_Affiche, "Opération en cours...")
            
            Taille.l = 95 ; Taille en Mo
            
            If mdp ; Test la présence d'un mot de passe ou non.
              Parametre.s = "a -s -hp" + mdp + " -m0 -v" + Str(Taille) + "m " + Archive + " " + Fichier
            Else
              Parametre.s = "a -s -m0 -v" + Str(Taille) + "m " + Archive + " " + Fichier
            EndIf
            Debug Parametre
            
            RunProgram(PathToWinrar, Parametre, GetPathPart(Fichier), #PB_Program_Wait) ; On lance l'archivage en attendant la fin d'éxécution   
 
            SetGadgetText(#Message_Affiche, "Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo") 
          Else 
            MessageRequester ("Information", zobi$) 
          EndIf 
        
        Case #Boutonimage_about ; Bouton à propos
          MessageRequester ("A Propos", "Winrar RS Decoupator réalisé par Ar-S"+Chr(10)+Chr(10)+"Plus de Logiciels sur http://arsworld.free.fr", #MB_ICONINFORMATION) 
      
      EndSelect
   
  ; Fermeture de la fenêtre 
  Case #PB_Event_CloseWindow 
    Quit = 1
    CloseWindow(#Fenettre) 

  EndSelect 
  
Until Quit = 1
End
;- - Fin du programme
Si tu veux quelques idées d'améliorations :
- archiver un ou plusieurs fichiers (demander les fichiers à archiver avant l'appui sur le bouton "Cliquer pour effectuer...")
- le choix de la taille des fichiers archives destinations
- choix de la méthode de compression (bonne ou rapide)

Cordialement,
Cls
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Merci de ta reponse et de ton code CLS !

Tout venait de ce foutu DOS qui n'acceptait evidement les espaces !!
Et j'avais pas pnsé à +Chr(34) pour afficher les guillements ! Du coup en modifiant ma ligne paramettre en :

Code : Tout sélectionner

Parametre$="a -s -ed -hp"+mdp$+" -m0 -v95m "+Chr(34)+Path$+nom_archive$+Chr(34) +" "+Chr(34)+Fichier$+Chr(34)
ça marche au poil :)

voilà le code :

Code : Tout sélectionner

Enumeration
  #Fenettre
  #OuvrirFichier
  #MDP
  #Nom_Archive
  #Boutonimage_about
  #Message_Affiche
  #Image_logo
  #Image_Image_1
  #Image_ButtonImage_1
  #Text_info
  #Text_Nom
EndEnumeration
  ;}
  
  ;{-mes textes---------------
ok$="Fichiers découpés avec succés"
zobi$="Vous avez annulé"
intro$="bienvenue"
zdjiqlzl$=Chr(65)+Chr(82)+Chr(109)+Chr(83)
;} 

;{ Image Plugins
UseJPEGImageDecoder()
;}

Procedure OpenWindow_Fenettre()
  If OpenWindow(#Fenettre, 447, 505, 390, 178, "Winrar RS Decoupator v0.4", #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_TitleBar|#PB_Window_BorderLess)
    If CreateGadgetList(WindowID(#Fenettre))
;- Le Bouton
        ButtonGadget(#OuvrirFichier, 0, 149, 355, 25, "Cliquer pour effectuer l'opération")
;- Les Boites
        EditorGadget(#Nom_Archive, 205, 95, 185, 20)
        EditorGadget(#MDP, 150, 120, 240, 20)
;- Les images
        ButtonImageGadget(#Boutonimage_about, 356, 149, 30, 25, CatchImage(#Image_ButtonImage_1, ?Image_ButtonImage_13))
        ImageGadget(#Image_logo, 1, 0, 355, 45, CatchImage(#Image_Image_1, ?Image_Image_1))
;- Les textes        
        TextGadget(#Message_Affiche, 0, 55, 390, 35, "Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo", #PB_Text_Border|#PB_Text_Center)
        TextGadget(#Text_Nom, 10, 98, 195, 20, "Entrer le nom des archives de sortie =>")
        TextGadget(#Text_info, 10, 122, 135, 20, "Entrer un mot de passe =>")
;Les couleurs des boutons et autre 
        PureCOLOR_SetGadgetColor(#Boutonimage_about, #PureCOLOR_SystemColor, #PureCOLOR_SystemColor)
        PureCOLOR_SetGadgetColor(#Text_info, $0, $1DCAE9)
        PureCOLOR_SetGadgetColor(#Text_Nom, $0, $1DCAE9)
        PureCOLOR_SetWindowColor(#Fenettre, $1DCAE9)
    EndIf
  EndIf
EndProcedure

;- La Boucle
OpenWindow_Fenettre()
;MessageRequester ("info",intro$) ; Pour afficher un petit message d'intro
;{ boucle
Repeat

Event = WaitWindowEvent()
  Select Event
  Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      mdp$= GetGadgetText ( #MDP )
      nom_archive$=GetGadgetText ( #Nom_Archive )
      If  EventGadget = #OuvrirFichier
        StandardPath$ = "C:\"   ; set initial path to display (could also be blank)
        Path$ = PathRequester("Choisissez le repertoire source", StandardPath$)
        If Path$
          RepRar$ = GetCurrentDirectory()
          rar$=RepRar$+"rar.exe"
          fichierpardefaut$=path$
          Filtre$ = "*.*|*.*"
          Filtre = 0
          Fichier$ =OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
          Parametre$="a -s -ed -hp"+mdp$+" -m0 -v95m "+Chr(34)+Path$+nom_archive$+Chr(34) +" "+Chr(34)+Fichier$+Chr(34) ; archive avec repertoire
          ; Parametre$="a -s -hp"+mdp$+" -m0 -v95m "+nom_archive$ +" "+Fichier$ ;test sans path$ pendant le traitement
          If Fichier$  
           ;SetGadgetText(#Message_Affiche,"rar.exe "+Parametre$)    ; test de l'affichage correct des paramettres rar.exe   
           SetGadgetText(#Message_Affiche,"Patienter SVP")
           RunProgram(rar$,Parametre$,Fichier$,1)   
           ; SetGadgetText(#Message_Affiche,"Bienvenue dans ce programme, vous aller obtenir"+Chr(10)+"des archives de 95 mo")
           If RunProgram("C:\WINDOWS\explorer",Path$,Path$,1)
              MessageRequester ("Rappel","Votre mot de passe est : "+mdp$+Chr(10)+"Notez le bien ;)")
              End
              Else
              MessageRequester ("info","Votre explorer est introuvable")
           EndIf
          Else
            MessageRequester ("info",zobi$)
          EndIf
        EndIf
       ElseIf EventGadget = #Boutonimage_about
          MessageRequester ( "A Propos" , "Winrar RS Decoupator réalisé par "+zdjiqlzl$,0)
          SetGadgetText(#Message_Affiche,"Opération terminée")
       EndIf
      ; //////////////////////
    Case #PB_Event_CloseWindow
      EventWindow = EventWindow()
      If EventWindow = #Fenettre
        CloseWindow(#Fenettre)
        Break
      EndIf
  EndSelect
ForEver
;}

DataSection ;>
  Image_Image_1:
  IncludeBinary "wrsd.jpg"
  Image_ButtonImage_13:
  IncludeBinary "about.jpg"
EndDataSection ;<
Pour ce qui est de ton code je ne l'ai pas encore testé mais une chose me perturbe. Le Global PathToWinrar n'est pas forcement le même sur tout les pc. C'est pour ça que je mettrai le rar.exe dans le dossier.

Pour les ajouts que tu as cité (modifier taille des archives, methode de compression... je ne sais pas si je vais le faire car le but de mon GUI n'est pas de remplacer Winrar mais d'executer une tache précise : Decouper au plus vite des fichiers >100mo en les protégeant par un passe.
Maintenant le soft fonctionne, je vais analyser le tient (bien plus propre :))
pour voir comment tu as structuré tout ça :)

grand merci ! :P
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Hello,

C'est vrai qu'il est plus pratique d'embarquer le rar.exe plutôt que de rechercher si WinRar est installé. Cette ligne c'était plutôt pour que je teste le programme chez moi.

Concernant les améliorations, il ne s'agit que d'idées au cas où tu voudrais t'amuser un peu.

Bon courage,
Cls
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Bon voilà, j'ai ajouter 2 boutons options pour gérer le taux de compression

#option_Fort
qui donne la valeur taux$="-m5"

et
#Option_Nul
qui donne la valeur taux$="-m0"

Ensuite je voudrais que lors de l'execution du bouton ouvrir, la valeur taux$
soient ajouter à ma ligne Parametre$

Code : Tout sélectionner

Parametre$="a -s -ep -hp"+mdp$+" "+taux$+" "+"-v95m "+Chr(34)+Path$+nom_archive$+Chr(34)+" "+Chr(34)+Fichier$+Chr(34)
Le probleme est que depuis que j'ai mis :

Code : Tout sélectionner

If EventGadget = #Option_Fort            ; en mettant cette boucle ça marche plus
        taux$="5"
      ElseIf EventGadget = #Option_Nul
        taux$="0"
      EndIf
ça marche plus.

Voilà la partie du code qui chie

Code : Tout sélectionner

OpenWindow_Fenettre()
;{ boucle
Repeat
  
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      mdp$= GetGadgetText ( #MDP )
      nom_archive$=GetGadgetText ( #Nom_Archive )
      
      If EventGadget = #Option_Fort            ; en mettant cette boucle ça marche plus
        taux$="5"
      ElseIf EventGadget = #Option_Nul
        taux$="0"
      EndIf
      
      If  EventGadget = #OuvrirFichier
        If mdp$ And nom_archive$ And taux$
          StandardPath$ = "C:\"   
          Path$ = PathRequester("Choisissez le repertoire source", StandardPath$)
          If Path$
            RepRar$ = GetCurrentDirectory()
            rar$=RepRar$+"rar.exe"
            fichierpardefaut$=Path$
            Filtre$ = "*.*|*.*"
            Filtre = 0
            Fichier$ =OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
            Parametre$="a -s -ep -hp"+mdp$+" "+taux$+" "+"-v95m "+Chr(34)+Path$+nom_archive$+Chr(34)+" "+Chr(34)+Fichier$+Chr(34) ; archive avec repertoire
            If Fichier$  
              SetGadgetText(#Message_Affiche,"Patienter SVP")
              RunProgram(rar$,Parametre$,Fichier$,1)   
              If RunProgram("C:\WINDOWS\explorer",Path$,Path$,1)
                MessageRequester ("Rappel","Votre mot de passe est : "+mdp$+Chr(10)+"Notez le bien ;)")
                SetGadgetText(#Message_Affiche,"Opération terminée")
              Else
                MessageRequester ("info","Votre explorer est introuvable")
              EndIf
            EndIf
          EndIf
        Else
          MessageRequester ("Alerte",alerte$)
        EndIf
      EndIf
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

C'est normal des OptionGadgets ne se gèrent pas comme les autres gadgets. Il faut récupérer la valeur lorsque tu cliques sur ton bouton "Compresser" (ou "Exécuter").
Pour récupérer l'optionGadget sélectionné, tu as GetGadgetState(#OptionGadget) qui te renvoi 1 s'il est sélectionné, 0 sinon. Dans ton cas, comme tu n'as que 2 options : c'est pas compliqué. Si l'un est sélectionné, l'autre ne l'est pas et vice versa, tu peux donc sortir un code du style :

Code : Tout sélectionner

Taux.s
if GetGadgetState(#Gadget_1) ; Option Fort
  Taux = "-m5"
else
  Taux = "-m0"
endif
Cordialement
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Encore merci CLS,
ça marche à merveille ! :P
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Message par Ar-S »

Me revoilà avec un petit soucis de fichier .ini

J'ai réussi à faire en sorte que mon fichier .ini se créé si il n'existe pas et qu'il inscrive à l'interieur le chemin que selectionnera l'utilisateur qui deviendra chemin par defaut.

Le problème est que ça marche la 1ere fois, mais si l'utilisateur re-ouvre
le programme une nouvelle fois, mais qu'il choisisse un autre repertoire (pendant l'etape If Path$...), le nouveau repertoire ne remplace pas le chemin par defaut dans fichier .ini.

Au besoin je vous up le pack zippé

Voilà mon code

Code : Tout sélectionner

Repeat
  
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      EventGadget = EventGadget()
      EventType = EventType()
      mdp$= GetGadgetText ( #MDP )
      nom_archive$=GetGadgetText ( #Nom_Archive )
 
    If  EventGadget = #OuvrirFichier
     taux.s
      If GetGadgetState(#Option_Fort) ; Option Fort
        taux = "-m5"
      Else
        taux = "-m0"
      EndIf
      If mdp$ And nom_archive$
        RepRar$ = GetCurrentDirectory()
        If ReadFile (0, "user.ini")
          Path$=ReadString(0)
          MessageRequester("info","le chemin des archives est "+Path$)
          StandardPath$ = Path$
        ElseIf CreateFile(0,RepRar$+"\user.ini")
          StandardPath$ = "C:\"   
          Path$ = PathRequester("Choisissez le repertoire source", StandardPath$)
          WriteStringN(0,Path$)
          StandardPath$ = Path$
        EndIf 
           If Path$
            ;RepRar$ = GetCurrentDirectory()
            rar$=RepRar$+"rar.exe"
            fichierpardefaut$=Path$
            Filtre$ = "*.*|*.*"
            Filtre = 0
            Fichier$ =OpenFileRequester ( "Choisissez le fichier à découper" , fichierpardefaut$ ,Filtre$, Filtre)
            Parametre$="a -s -ep -hp"+mdp$+" "+taux+" "+"-v95m "+Chr(34)+Path$+nom_archive$+Chr(34)+" "+Chr(34)+Fichier$+Chr(34) ; archive avec repertoire
            If Fichier$ 
              WriteStringN(0,Path$)
              SetGadgetText(#Message_Affiche,"Patienter SVP")
              RunProgram(rar$,Parametre$,Fichier$,1)   
              If RunProgram("C:\WINDOWS\explorer",Path$,Path$,1)
                MessageRequester ("Rappel","Votre mot de passe est : "+mdp$+Chr(10)+"Notez le bien ;)")
                SetGadgetText(#Message_Affiche,"Opération terminée")
              Else
                MessageRequester ("info","Votre explorer est introuvable")
              EndIf
            EndIf
          EndIf
        Else
          MessageRequester ("Alerte",alerte$)
        EndIf
      EndIf
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

il te suffit de sauvegarder ton ini juste avant de quitter le prg

(juste avant le "end" !!)

mais prevois un "Delay (500)"
avant de quitter , histoire de laisser le temps au programme d'ecrire son fichier :D


en utilisant le dernier chemin se trouvant dans ta variable :D

je suppose (RepRar$)
Répondre