| j'ai besoin d'aide avec dir_change | |
|
|
Auteur | Message |
---|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 12:00 | |
| bonjour à tous, Voici un code pour tester Ce que je ne comprend pas c'est que DIR_CHANGE n'a pas l'air de fonctionner - Code:
-
dim rep$,nouveau_dossier$ width 0,screen_x rep$=dir_current$ nouveau_dossier$=rep$+"\test" caption 0,nouveau_dossier$ wait 2000 dir_change nouveau_dossier$ caption 0,dir_current$
Merci d'avance... A+ | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 12:24 | |
| Chez moi, ça marche comme ça: - Code:
-
dim rep$,nouveau_dossier$ width 0,screen_x rep$=dir_current$ nouveau_dossier$=rep$+"\test" caption 0,nouveau_dossier$ wait 2000 if dir_exists(nouveau_dossier$)=0 then dir_make nouveau_dossier$ dir_change nouveau_dossier$ caption 0,dir_current$ dir_change ne peut pas changer vers un dossier qui n'existe pas. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 12:25 | |
| Laissez tomber j'ai simplement oublié de tester l’existence du répertoire.
Mais n'aurais-je pas dû avoir un message me signalant que le répertoire que j'essais d'ouvrir n'existe pas ?
A+
PS: on s'est croisé Klaus, merci pour ta réponse... | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: besoin d'aide Dir_remove Ven 16 Nov 2012 - 13:08 | |
| Encore moi Pourquoi le répertoire test n'est-il pas supprimé dans le code ci-dessous. - Code:
-
dim rep$,nouveau_dossier$ width 0,screen_x rep$=dir_current$ nouveau_dossier$=rep$+"\test" caption 0,nouveau_dossier$ wait 2000 if dir_exists(nouveau_dossier$)=0 then dir_make nouveau_dossier$ dir_change nouveau_dossier$ caption 0,dir_current$ dir_remove dir_current$
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 13:11 | |
| Tu ne peux pas supprimer un répertoire dans lequel tu te trouves... si tu veux le supprimer il faut que tu fasses un dir_change "..\" avant...
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 13:11 | |
| Parce que tu es dans ce dossier, avec dir_change. Utilise cette commande pour te mettre dans un autre dossier, et tu pourras supprimer celui que tu viens de quitter.
EDIT
On s'est croisé, Nardo... | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 13:21 | |
| Merci à vous deux, La réponse ne m'arrange pas Bon, je vais regarder comment contourner... quant a DIR_CHANGE, j'ai vu que Klaus avait signalé dans les BUGs qu'il n'y a pas de message d'erreur si le répertoire n'existe pas. A+ | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 14:17 | |
| J'ai changé mon dossier de repertoire, il est vide, mais j'ai un message qui me dit impossible de supprimer le répertoire (directory) parce qu'il ne serait pas vide ou qu'il serait protégéAlors j'ai décoché la case lecture seule dans les propriété du dossier, mais elle se recoche automatiquement. Bref je ne m'en sort pas.... Pouvez-vous me donner un exemple ? A+ | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 14:37 | |
| Voici un exemple: - Code:
-
dim initial$, dossier$
initial$ = dir_current$
width 0,700 memo 1 : top 1,10 : left 1,10 width 1,700 : height 1,400 : bar_both 1
item_add 1,"Dossier actuel: "+initial$ message "Taper Return pour continuer"
dossier$ = initial$ + "\test" if dir_exists(dossier$)=1 item_add 1,"Dossier existant: "+dossier$ else item_add 1,"Dossier absent: "+dossier$ message "Taper Return pour continuer" dir_make dossier$ if dir_exists(dossier$)=1 item_add 1,"Dossier créé: "+dossier$ message "Taper Return pour continuer" dir_change dossier$ item_add 1,"Dossier actuel: "+dir_current$ message "Taper Return pour continuer" dir_change initial$ item_add 1,"Dossier actuel: "+dir_current$ message "Taper Return pour continuer" dir_remove dossier$ if dir_exists(dossier$)=1 item_add 1,"Erreur en suppression: "+dossier$ message "Il y a un problème..." else item_add 1,"Dossier supprimé: "+dossier$ message "Tout marche..." end_if else item_add 1,"Erreur en création de dossier: "+dossier$ message "Dommage..." end_if
end_if
end
Cela devrait se terminer ainsi: | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 16:59 | |
| Bonjour tout le monde, ce serait une bonne idée de faire de belles procédures réutilisables pour ces 2 parties de traitement sur les répertoires:
--------------------- Phase 1: Entrer dans un répertoire ou le créer Il faut tester sir le répertoire existe S'il n'existe pas, demander confirmation à l'utilisateur pour savoir s'il veut le créer ou changer d'emplacement. Vérifier que le répertoire existe (de nouveau) après création -------------------- Phase 2: Proposer la suppression du répertoire temporaire Vérifier si le répertoire existe S'il existe demander si l'utilisateur veut le supprimer Si oui - changer le répertoire courant - supprimer le répertoire - vérifier si le répertoire est toujours présent si oui, retenter la suppression -------------------- | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 18:19 | |
| Pour la phase 2: en parlant de répertoire temporaire, tu parles du répertoire courant ?
PS: faut penser à vider le répertoire avant de vouloir le supprimer... et si il y a des sous-repertoires, faire de même... ya du récursif là dedans... le problème c'est que ce n'est pas réalisable à cause du bug sur FIND_FILE_NEXT...
| |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 18:58 | |
| HA YA YAH ! Cà fait une après midi a ce prendre la tête et si çà se trouve j'ai bossé pour rien Ton code Klaus marche bien J'ai tenté une procédure et çà marche pas (d'après Nardo je crois que je vais la garder de coté) Voici le code pour les intéressés - Code:
-
dim a$,rep$,r$,el$(2),Dlist_tri% label suppression_utilisateur,SVD el$(2)="Jean Claude" rep$=dir_current$ width 0,900:height 0,60 Dlist_tri%=1:dlist Dlist_tri% gosub suppression_utilisateur END ' ============================================================================== suppression_utilisateur: a$=rep$+"\dossier_test_"+el$(2):dir_change a$:a$="":a$="dossier_test_"+el$(2) Detruit_Dossier(rep$+"\"+a$,a$):if r$="N" then return return
Sub Detruit_Dossier(Nom_Long_Dossier_Sup$,Nom_Court_Dossier_Sup$) if dir_exists(Nom_Long_Dossier_Sup$)=0 then r$="N":Exit_Sub ' if dir_exists(Nom_Long_Dossier_Sup$)=0 then dir_make Nom_Long_Dossier_Sup$ dir_change Nom_Long_Dossier_Sup$
' caption 0,Nom_Long_Dossier_Sup$:end
r$="":dim_local m%,i%,fichier$ fichier$="" SVD: m%=message_confirmation_yes_no("ATTENTION: vous avez demandé la suppression du dossier "+Nom_Court_Dossier_Sup$+chr$(13)+chr$(13)+string$(3+len(Nom_Court_Dossier_Sup$)," ")+"Tous les fichiers qu'il contient seront détruits"+chr$(13)+chr$(13)+string$(14," ")+"Voulez-vous réellement supprimer "+Nom_Court_Dossier_Sup$+" ?") if m%=0 then message " * Vous devez répondre à la question * ":goto SVD if m%=2 then r$="N":Exit_Sub clear Dlist_tri% fichier$=file_find_first$ if fichier$="_" file_find_close : ' <======= cette ligne manquait ! dir_change rep$ message "Suppression de "+Nom_Long_Dossier_Sup$ if dir_exists(Nom_Long_Dossier_Sup$)=1 then dir_remove Nom_Long_Dossier_Sup$ Exit_Sub else while fichier$<>"_" item_add Dlist_tri%,fichier$ fichier$=file_find_next$ end_while file_find_close for i%=1 to count(Dlist_tri%) fichier$=item_read$(Dlist_tri%,i%) file_delete fichier$ next i% dir_change rep$ dir_remove Nom_Long_Dossier_Sup$ end_if End_Sub
A+ Version corrigée suite à l'intervention de Klauss et utilisable quant le bug file_find_firt$ sera corrigé.
Dernière édition par Jean Claude le Ven 16 Nov 2012 - 21:18, édité 2 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 19:27 | |
| Tu tombes exactement sur le bug de file_find: même si l'on fait file_find_close, Panoramic ne libère pas le dossier. C'est bien un bug Panoramic. Bon, tu as oublié un file_file_close dans le cas de fichier$="_", car si, et c'est ton cas, le dossier était initialement vide, tu ne passes jamais par le file_find_close que tu as prévu. Bon, ceci mis à part, pour mettre le bug en évidence, j'ai mis la ligne file_find_first en commentaire (ainsi que la ligne file_find_close que j'ai ajoutée), et j'ai force fichier$ à "_". Et là, tout marche bien. Cela prouve que ta procédure marche très bien SANS file_find, mais dès que tu actives file_find, ça ne marche plus. Et comme dir_remove ne signale pas d'erreur, on n'y voit que du feu. Voici le code modifié: - Code:
-
dim a$,rep$,r$,el$(2),Dlist_tri% label suppression_utilisateur,SVD el$(2)="Jean Claude" rep$=dir_current$ width 0,900:height 0,60 Dlist_tri%=1:dlist Dlist_tri% gosub suppression_utilisateur END ' ============================================================================== suppression_utilisateur: a$=rep$+"\dossier_test_"+el$(2):dir_change a$:a$="" a$="dossier_test_"+el$(2) Detruit_Dossier(rep$+"\"+a$,a$):if r$="N" then return return
Sub Detruit_Dossier(Nom_Long_Dossier_Sup$,Nom_Court_Dossier_Sup$) ' if dir_exists(Nom_Long_Dossier_Sup$)=0 then r$="N":Exit_Sub
if dir_exists(Nom_Long_Dossier_Sup$)=0 then dir_make Nom_Long_Dossier_Sup$ dir_change Nom_Long_Dossier_Sup$
' caption 0,Nom_Long_Dossier_Sup$:end
r$="":dim_local m%,i%,fichier$ fichier$="" SVD: m%=message_confirmation_yes_no("ATTENTION: vous avez demandé la suppression du dossier "+Nom_Court_Dossier_Sup$+chr$(13)+chr$(13)+string$(3+len(Nom_Court_Dossier_Sup$)," ")+"Tous les fichiers qu'il contient seront détruits"+chr$(13)+chr$(13)+string$(14," ")+"Voulez-vous réellement supprimer "+Nom_Court_Dossier_Sup$+" ?") if m%=0 then message " * Vous devez répondre à la question * ":goto SVD if m%=2 then r$="N":Exit_Sub clear Dlist_tri% ' fichier$=file_find_first$ fichier$ = "_" if fichier$="_" ' file_find_close : ' <======= cette ligne manquait ! dir_change rep$ message "Suppression de "+Nom_Long_Dossier_Sup$ if dir_exists(Nom_Long_Dossier_Sup$)=1 then dir_remove Nom_Long_Dossier_Sup$ Exit_Sub else while fichier$<>"_" item_add Dlist_tri%,fichier$ fichier$=file_find_next$ end_while file_find_close for i%=1 to count(Dlist_tri%) fichier$=item_read$(Dlist_tri%,i%) file_delete fichier$ next i% dir_change rep$ dir_remove Nom_Long_Dossier_Sup$ end_if End_Sub
Je répète: c'est bien un bug, signalé déjà, et qui n'est pas encore corrigé ! | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 20:49 | |
| Merci Klaus pour ta réponse,
effectivement il manquait file_find_close
Je suis assez content que la procédure soit correct (quant le bug avec file_find_firt$ sera corrigé) .
Par contre j'attire l'attention sur le fait que ta modification (en forçant fichier$="_") n'est que pour montrer le bug. Car du coup la procédure ne sert plus à rien, vu que les fichiers (s'il y en a) du dossier ne seront pas supprimés. Aussi je modifie mon code publié en ajoutant la ligne qui manquait et sans shunter file_find_firt$ et sans modifier fichier$. Ceci permettra de se servir de la procédure quant le bug sera réparé.
Encore merci A+
Dernière édition par Jean Claude le Ven 16 Nov 2012 - 20:55, édité 1 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 20:55 | |
| Tu as raison, bien sûr, et je l'avais indiqué dans mon post: - Citation :
- Bon, ceci mis à part, pour mettre le bug en évidence, j'ai mis la ligne file_find_first en commentaire (ainsi que la ligne file_find_close que j'ai ajoutée), et j'ai force fichier$ à "_". Et là, tout marche bien.
C'était effectivement juste pour mettre la puce à l'oreille de Jack, qui est le seul à pouvoir intervenir à ce niveau. | |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: j'ai besoin d'aide avec dir_change Ven 16 Nov 2012 - 20:58 | |
| Oui j'ai vu que tu l'avais indiqué, mais je voulais être certain que personne ne prenne ta version comme étant une version corrigée et valide.
Bon, il ne reste plus qu'a attendre la prochaine version de Panoramic...
Bonne soirée A+ | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: j'ai besoin d'aide avec dir_change Sam 17 Nov 2012 - 1:25 | |
| Plus qu'à attendre le prochain instantané de Jack maintenant alors pour tester la procédure | |
|
| |
Contenu sponsorisé
| Sujet: Re: j'ai besoin d'aide avec dir_change | |
| |
|
| |
| j'ai besoin d'aide avec dir_change | |
|