Page 1 sur 1

[R] FileOpenDialog et Fichier .ini

Posté : sam. 27 nov. 2010 23:33
par cutprod
Bonjour a tous, je bloque sur un truc tout bête et j'ai beau chercher ca vient pas...(même en appuyant fort sur F1 :lol: )
Je n'arrive pas a écrire une variable dans un fichier .ini si celle ci est le résultat d'un "FileOpenDialog"

Code : Tout sélectionner

Global $6

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            Global $6 = FileOpenDialog("Selection du fichier audio",@DesktopDir,"(*.*)")
            GUICtrlSetData($Input1,$6)
        Case $Button2
            IniWrite("test.ini","parametres","var",$6)
    EndSwitch
WEnd
Pourtant une MsgBox me l'affiche (le chemin complet, C:\....)
Pourquoi? :?:

Re: [..] FileOpenDialog et Fichier .ini

Posté : sam. 27 nov. 2010 23:44
par sylvanie
bonsoir,
je constate que l'iniwrite n'est pas dans le même appel que le FileOpenDialog, est-ce qu'entretemps, la variable $6 ne serait pas écrasée entre l'appui du bouton 1 et l'appui du bouton 2 ?

Re: [..] FileOpenDialog et Fichier .ini

Posté : sam. 27 nov. 2010 23:52
par cutprod
Même résultat si dans le même appel, et idem si le opérations s'effectue dans 2 fonctions ou 1 ...

Re: [..] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 00:23
par matwachich
D'abords: On ne declare une variable qu'une seul fois (faut pas mettre 2 fois Global)
Et puis: Mettre le chemin complet vers le fichier .ini (@ScriptDir & "\test.ini" par exemple)

Une gui toute moche qui marche

Code : Tout sélectionner

#include <GUIConstants.au3>
Global $6

#region - GUI Create
GUICreate('',200,80)
$Button1 = GUICtrlCreateButton("B1", 5, 5, 80, 40)
$Button2 = GUICtrlCreateButton("B2", 90, 5, 80, 40)
$Input1 = GUICtrlCreateInput("", 5, 50, 190, 20)
GUISetState()
#endregion

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $6 = FileOpenDialog("Selection du fichier audio",@DesktopDir,"(*.*)")
            GUICtrlSetData($Input1,$6)
        Case $Button2
            IniWrite("test.ini","parametres","var",$6)
    EndSwitch
WEnd
 

Re: [..] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 09:26
par cutprod
Je te remercie beaucoup pour ton déblocage, il suffisé de donner le chemin complet au fichier .ini.
Mais comment explique tu que ce paramètre soit obligatoire pour une variable contenant le retour d'un "FileOpenDialog" et pas pour d'autre type??
Ce code fonctionne, le fichier .ini est crée et remplit!!

Code : Tout sélectionner

#include <GUIConstants.au3>

#region - GUI Create
GUICreate('',200,80)
$Button1 = GUICtrlCreateButton("B1", 5, 5, 80, 40)
$Button2 = GUICtrlCreateButton("B2", 90, 5, 80, 40)
$Input1 = GUICtrlCreateInput("", 5, 50, 190, 20)
GUISetState()
#endregion

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            $6 ="rrrrrrrrr" 
            GUICtrlSetData($Input1,$6)
        Case $Button2
            IniWrite("test.ini","parametres","var",$6)
    EndSwitch
WEnd
 
Ca marche pour $6 =@ComputerName
pour $6 =@YDAY, ect... mais pas pour $6 ="FileOpenDialog"
Pourquoi :?:
En tout cas merci pour ton aide.

Re: [..] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 10:27
par Tlem
Je ne comprend pas trop le sens de votre question, mais en l'état, votre script ne suis pas une logique de programmation.

Que vous utilisiez la variable $6 pour affecter le composant $Input1, soit.
Par contre la réutilisation de celle-ci dans une autre partie du script, ne garanti pas le contenu de celle-ci.

La logique voudrait (si j'ai bien compris ce que vous cherchez à faire), d'écrire dans le ini la valeur affichée dans $Input1.
Donc ceci serait plus approprié :

Code : Tout sélectionner

Case $Button2
            IniWrite("test.ini","parametres","var",GUICtrlRead($Input1))

Re: [..] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 11:13
par cutprod
Non non le sens de ma question n'est pas la , $input1 n'avait comme vocation que l'affichage pour contrôle visuel.
Le but était d' écrire dans un fichier ini une variable issus d'un "FileOpenDialog".
Donc ma dernière question était = pourquoi je suis obliger de renseigner le chemin complet du fichier ini si je veut y inscrire le résultat d'un "FileOpenDialog" alors que je ne suis pas obliger (celui-ci se crée a coté du script par défaut) si ma variable est d'un autre type (que "FileOpenDialog")??
Mais c'est juste pour info car je suis débloquer et je continu le développement de mon script.

Re: [..] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 11:55
par Tlem
Effectivement, après quelques tests divers, je constate aussi un comportement étrange si le chemin du fichier .ini n'est pas spécifié.

Je suppose un bug. Après avoir fait quelques recherche dans le bugtracker du forum Anglais, je n'ai vu aucune référence à ce problème. Donc je vais de ce pas le signaler sur celui-ci.

Edit : Voila qui est fait => http://www.autoitscript.com/trac/autoit/ticket/1828
J'ai essayé de ménager la susceptibilité de certains (DEV) en prenant un maximum de gants !!! :roll:

Re: [R] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 12:04
par cutprod
"So is it a bug or did we miss something?" ho le joli gant :lol:
Tenez moi au courant de la suite donné au signalement, et merci pour votre aide.

Re: [R] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 12:15
par Tlem
Bin, je fait du mieux que je peut, mais l'autre jour j'ai signalé le problème du bouton Cancel de l'InputBox (qui n'est pas traduit en localisé) et Valik à pris ça d'un peut haut !!!
D’ailleurs il en a clôturer le ticket.
Certes il à une réputation de quelqu'un d'un peut spécial, mais j'avoue avoir du mal à comprendre sa réaction.

Comme je n'ai aucun poids particulier sur l'équipe de développement, je me retrouve au même niveau que n'importe quel utilisateur. :cry:
D’où l'utilisation de gants moufles pour signaler bugs et autres.

En ce qui concerne le suivit du problème, vous pourrez le faire comme moi même, en allant voir régulièrement si une réponse est donnée dans le BugTracker. :roll:

Re: [R] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 21:17
par sylvanie
hou là, attention, je ne pense pas que ceci soit un bug.
En effet, toute action du type filewrite("toto.txt",...) va réaliser l'action dans le wokingdir si on ne précise pas le chemin absolu.
Or, dans l'aide de la fonction FileOpenDialog on voit

@WorkingDir is changed on successful return

Du coups il est normal que le fichier ini s'écrive dans le répertoire de provenance du FileOpenDialog.

Par contre à la première lecture du poste, je n'avais pas compris que c'était un problème relatif à l'emplacement de l'enregistrement

Re: [R] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 21:21
par Tlem
C'est bien ce que Jos à répondu sur le BugTracker.

J'avais pourtant lu et relu la documentation des deux fonctions, mais cette 'insignifiante' :roll: phrase était passée inaperçue ... :oops:

Re: [R] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 21:35
par cutprod
Oulala.. et tout ca c'est ma faute! dsl
Et moi je viens de trouver le dossier music replis de fichier*.ini :shock:

Re: [R] FileOpenDialog et Fichier .ini

Posté : dim. 28 nov. 2010 21:43
par sylvanie
On ne peut pas réellement dire qu'il y ait un fautif. Le comportement de la fonction pouvait légitimement ouvrir tout un tas de questions. C'est pas grave ...