[R] 100 GUI (script "multi-GUI"), simplification possible ?

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

[R] 100 GUI (script "multi-GUI"), simplification possible ?

#1

Message par protecta »

Bonjour à tous. J'ai pour projet de créer un questionnaire pour des partiels. Il comporterait au moins 100 questions. Chaque question sera posée sur une unique GUI, l'utilisateur cochera les réponses qu'il pense être exactes (c'est un QCM à 5 choix). Ensuite, il clique sur un bouton "Valider" et le script passe à la question suivante, donc à la GUI suivante. Pour le moment, la seule solution que j'ai serait de créer 100 GUI, ce qui me parait idiot, et je cherche donc un moyen de diminuer considérablement le code. En soit je m'en fiche un peu, le script fonctionnera, mais pour la clarté et simplicité, j'aimerais connaitre la solution. J'ai déjà lu ceci : http://www.autoitscript.fr/forum/viewto ... =11&t=3952
Evidemment, pour 2 GUI ça passe, mais 100 ...

J'avais pensé à mettre la création d'une GUI sous une fonction, comme ceci :

Code : Tout sélectionner

func creation_graphique($la_question, $reponse1, $reponse2,$reponse3)
$Form1 = GUICreate("Questionnaire médecine", 506, 208, 221, 116)
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
$question = GUICtrlCreateLabel($la_question, 40, 56, 392, 17)
$choix1 = GUICtrlCreateRadio($reponse1, 56, 136, 49, 17)
GUICtrlSetOnEvent(-1, "Radio1Click")
$choix2 = GUICtrlCreateRadio($reponse2, 209, 136, 49, 17)
GUICtrlSetOnEvent(-1, "Radio2Click")
$choix3 = GUICtrlCreateRadio($reponse3, 383, 136, 49, 17)
GUICtrlSetOnEvent(-1, "Radio3Click")
GUISetState(@SW_SHOW)
endfunc
 
Seulement, comment passer d'une GUI à une autre, si j'ai toujours la même variable pour deux GUI différentes ? Si j'avais des noms différents, il suffirait de mettre GUISetState(@SW_HIDE) + le nom de la GUI en question, seulement je ne vois pas comment faire ceci. Et de plus, je compte évidemment faire une correction, j'ai donc besoin de garder en mémoire les cases cochées (bon dans mon exemple ce sont des boutons radio au lieu de checkbox, mais peu importe) qui ont la aussi le même problème, je modifierais 100 fois la même variable, qui n'aura qu'un résultat. Un rapport avec les variables de type "local" ?

Bref voilà, je m'en remets à vous pour simplifier le code ! :wink:
[edit] : Est-ce que le fait de mettre mes variables en local, et de les stockées dans un tableau fonctionneraient ? Reste toujours le problème pour changer de GUI :P
Modifié en dernier par protecta le jeu. 10 mars 2011 17:51, modifié 1 fois.
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#2

Message par sksbir »

Bonjour

Pourquoi ne pas faire une seule GUI qui se met à jour ? Tu as guictrlsetdata pour changer les choses après coup...
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2109
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#3

Message par TommyDDR »

Je vous conseil de créer un .ini (cette forme me parait la plus judicieuse pour votre utilisation) et d'y mettre toutes les questions / réponses dedans.

Ensuite vous créez votre GUI (1 seule) avec 1 label pour la question, 5 checkbox pour les réponses, 1 bouton valider

et à chaque question vous faites un :

Code : Tout sélectionner

ChargerGUI($NumeroQuestion)
qui s'occupera de re-remplir les champs.

Edit : Grillé par sksbir :(
Edit 2 : Charger et non Cherger.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#4

Message par protecta »

Merci pour vos réponses rapides, je vais voir ça. :)
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#5

Message par sksbir »

TommyDDR a écrit :Edit : Grillé par sksbir :(
J'aime pas cette idée de "grillé"... A ce jeu, celui qui fait la réponse la plus courte est "gagnant", ce qui n'est pas forcément une bonne idée pour obtenir des réponses plus construites, et donc plus longues à formuler.
Mais ici, coup de bol : nos réponses sont complémentaires :) ( et on referme vite la parenthèse hein..)
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#6

Message par protecta »

En effet c'est complémentaire, et justement, j'aurais besoin d'une précision.
La fonction GUIctrlsetdata, je la comprends elle est simple, maintenant, comment remplacer le texte de mes boutons et de ma question à partir du fichier .ini en question ? J'ai cherché ChergerGUI($NumeroQuestion) sans résultat :roll:... Une petite précision s'il vous plait ?
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#7

Message par sksbir »

protecta a écrit :En effet c'est complémentaire, et justement, j'aurais besoin d'une précision.
La fonction GUIctrlsetdata, je la comprends elle est simple, maintenant, comment remplacer le texte de mes boutons et de ma question à partir du fichier .ini en question ? J'ai cherché ChergerGUI($NumeroQuestion) sans résultat :roll:... Une petite précision s'il vous plait ?
C'est parce que ChercherGui (ou chargerGui peut-etre... peu importe son nom), c'est une fonction que t'es sensé écrire toi-même :D ( d'ailleurs, ya pas de fonctions natives d'autoit qui portent des noms en français. ça permet de faire la différence justement...)
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#8

Message par protecta »

Ahhhhh xD, bah cherger n'étant pas un mot français, je ne pouvais pas deviner ;D. Ok, et eumh, un truc pour les débutants ? J'imagine qu'il me faut 6 paramètres, 1 pour la question et les 5 autres pour les réponses, pourriez-vous m'indiquez une fonction (si elle existe) qui copie et colle un texte ?
Avatar du membre
TommyDDR
Modérateur
Modérateur
Messages : 2109
Enregistré le : mar. 22 juil. 2008 21:55
Localisation : Nantes
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#9

Message par TommyDDR »

Désolé pour le cherger, c'était bien charger ca m'apprendre à ne pas relire ce qui se situe dans les balises

Code : Tout sélectionner

.

Pour vos paramètres vous n'êtes pas obligé, voici un petit exemple :

[spoiler=][code=text]#include <GUIConstantsEx.au3>

Opt("GUIOnEventMode", 1)

Dim $ContenuGUIS[5][2] = [["Label1", "Check1"], ["Label2", "Check2"], ["Label3", "Check3"], ["Label4", "Check4"], ["Label5", "Check5"]]
Dim $Gui
Dim $Label
Dim $CheckBox

$Gui = GUICreate("test", 100, 100)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
$Label = GUICtrlCreateLabel("", 10, 10, 80, 20)
$CheckBox = GUICtrlCreateLabel("", 10, 50, 80, 20)
GUISetState()

For $i = 0 To 4
    ChargerFenetre($i)
    Sleep(1000)
Next

Func ChargerFenetre($NumeroFenetre)
    ; On vérifie que l'on ne dépasse pas le tableau (pour éviter un BOOM)
    If($NumeroFenetre >= 0 And $NumeroFenetre < UBound($ContenuGUIS, 1)-1) Then
        ; On change le texte du label
        GUICtrlSetData($Label, $ContenuGUIS[$NumeroFenetre][0])
        ; On change le texte de la checkbox
        GUICtrlSetData($CheckBox, $ContenuGUIS[$NumeroFenetre][1])
    EndIf
EndFunc

Func quit()
    Exit
EndFunc
[/spoiler]

Si toutes les infos sont stockés dans un tableau, l'indice de celui-ci suffit.
PS : Le "Grillé" était surtout pour indiqué qu'on avait écrit nos messages en même temps, ce n'était pas à prendre comme un résultat de course.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#10

Message par sksbir »

D'après les questions, les notions de boucles, d'exécution conditionnées, de variables... ne sont pas encore acquises.
Je conseille très fort le parcours de ce tuto : http://www.siteduzero.com/tutoriel-3-22 ... utoit.html
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#11

Message par protecta »

Hmmm, le tuto je l'ai lu, merci quand même. La question est de mettre ça en place de manière organisée, de raisonner, les bases je pense les avoir.
[edit] : j'ai fait la fonction pour lire mes données dans le .ini, reste plus qu'à trouver le moyen de les remplacer grâce au guictrlsetdata.
[edit2] mon problème est résolu grâce à vous deux !
Mon .ini se présente sous cette forme :

Code : Tout sélectionner

Comment je m'appelle ?
Alexandre
Maurice
Jean-Claude
Marc
Zuboy

Quelle est ma couleur préférée ?
jaune
bleu
rouge
vert
noir
Ma fonction qui récupère toutes ces données :

Code : Tout sélectionner

func recupere_infos()
    FileOpen("question.ini")
    $question=FileReadLine("question.ini",$ligne1+1)
    $ans1=FileReadLine("question.ini",$ligne2+2)
    $ans2=FileReadLine("question.ini",$ligne3+3)
    $ans3=FileReadLine("question.ini",$ligne4+4)
    $ans4=FileReadLine("question.ini",$ligne5+5)
    $ans5=FileReadLine("question.ini",$ligne6+6)
    $ligne1=$ligne1+7 ;+7 dû à la présentation de mon .ini, a savoir que j'ai 6 lignes de données 
    $ligne2=$ligne2+7 ; et un saut de ligne pour la clarté
    $ligne3=$ligne3+7
    $ligne4=$ligne4+7
    $ligne5=$ligne5+7
    $ligne6=$ligne6+7
    Dim $ContenuGUIS[6] = [$question, $ans1, $ans2, $ans3, $ans4, $ans5] ;pompé ...
EndFunc
 
la fonction qui remplace les checkbox et label :

Code : Tout sélectionner

Func Button1Click() ;bouton "validation"
recupere_infos()
GUICtrlSetData($Label1,$question)
GUICtrlSetData($Checkbox1,$ans1)
GUICtrlSetData($Checkbox2,$ans2)
GUICtrlSetData($Checkbox3,$ans3)
GUICtrlSetData($Checkbox4,$ans4)
GUICtrlSetData($Checkbox5,$ans5)
EndFunc 
 
Voilà, donc problème résolu, même si mon script n'est pas terminé, il manque un compteur pour ne pas qu'il aille chercher des infos à l'infini dans le .ini, et la vérification des checkbox cochées pour la correction.
Merci à vous deux, et bonne journée. :wink:
Modifié en dernier par protecta le jeu. 10 mars 2011 17:30, modifié 2 fois.
GaRydelaMer
Niveau 7
Niveau 7
Messages : 450
Enregistré le : mer. 18 mars 2009 22:12
Localisation : Montpellier
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#12

Message par GaRydelaMer »

Bonjour


je pense qu'il faut aller un peu plus loin avec ton tableau:


1 Ou va se trouver la source des question ?
En dur dans le programme ?
Source externe ?

Ensuite effectivement lire la source et créer un tableau avec plusieurs éléments
1 la question => Label
2 le choix 1 => texte du Checkbox GUICtrlRead
3, 4, 5, ...
6 le choix 5 => texte du Checkbox
7 La Solution => pour le test de validité, prévoir un choix multiple pour certaine question ?: pour les choix A,B,C,D,E; Unique: C, Multiple: BD
8 La réponse du candidat => à lire en fonction des checkboxs du 2 GUICtrlState

donc déja il te faut un tableau à au moins 2 dimensions $QCM[101][8]

Ensuite ils ont raison une seule GUI
Tu lis à la suite les éléments du tableau, une variables globales avec le N° de la question = $Index du Tableau
Un bouton valider
Il va comparer les cases cocher avec la réponse, dans le tableau, et tu vas stocker les réponses aussi

$Index = 1 ; 1Ere question

La question c'est $aQCM[$Index][0]
Le choix 1 c'est $aQCM[$Index][1]
$Question = label()
$Choix1 = CheckBox()
etc
GUISetdata() et roule ma poule, tes contrôle sont créer tu change le texte

$Bt_Valider = Button()
; Traitement sur le clic
; on met à jour le tableau
If _isChecked($Choix1) Then = $aQCM[$Index][8]&= "A"
If _isChecked($Choix2) Then = $aQCM[$Index][8]&= "B"
If _isChecked($Choix5) Then = $aQCM[$Index][8]&= "E"

; La reponse La solution
If $aQCM[$Index][8] = $aQCM[$Index][7] Then $Point += 1

If $Index > Ubound($aQCM) then
; fin des test Total des points $Point / $Index
end if
$Index += 1

Question 2 on refait comme avant
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#13

Message par protecta »

Voir plus haut :P. Oui, mon .ini est externe, et je compte faire mon script avec des séries de 100 questions. Le nom du .ini changera donc en fonction de la série, et il y aura plusieurs .ini au final donc. Je ferais un compteur à 99, puisque la première GUI s'affiche sans validation préalable.
Voilà, merci quand même pour ton aide !
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [..] 100 GUI (script "multi-GUI"), simplification possib

#14

Message par matwachich »

Désolé, mais je te donne un code pauvre en commentaire car je suis pressé là.
Essai de l'analyser, je pense que c'est une bonne base.

PS: faut lire le fichier d'aide de temps en temps! lol
► Afficher le texte
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [R] 100 GUI (script "multi-GUI"), simplification possibl

#15

Message par protecta »

Je n'ai pas compris cette partie là :

Code : Tout sélectionner

Func _analyserIni()
    Local $Questions = IniReadSectionNames($__ini)
    $__questions[0] = $Questions[0]
   
    For $i = 1 To $Questions[0]
        Redim $__questions[$i + 2]
        $__questions[$i] = IniRead($__ini, $Questions[$i], "enonce", "ERREUR")
    Next
EndFunc
Bon j'en suis rendu aux résultats là, pour le moment je stock tout dans un .txt, c'est un peu obsolete donc faut que je refasse ça, sinon tout fonctionne. Voici le code final (moche et non commenté):

Code : Tout sélectionner

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
$reponse_coche1=0
$reponse_coche2=0
$reponse_coche3=0
$reponse_coche4=0
$reponse_coche5=0
$i=1
$ii=1
$ans1=0
$ans2=0
$ans3=0
$ans4=0
$ans5=0
$question=0
$ligne1=0
$ligne2=0
$ligne3=0
$ligne4=0
$ligne5=0
$ligne6=0
$time=0
func recupere_infos()
    FileOpen("question.ini")
    $question=FileReadLine("question.ini",$ligne1+1)
    $ans1=FileReadLine("question.ini",$ligne2+2)
    $ans2=FileReadLine("question.ini",$ligne3+3)
    $ans3=FileReadLine("question.ini",$ligne4+4)
    $ans4=FileReadLine("question.ini",$ligne5+5)
    $ans5=FileReadLine("question.ini",$ligne6+6)
    $ligne1=$ligne1+7
    $ligne2=$ligne2+7
    $ligne3=$ligne3+7
    $ligne4=$ligne4+7
    $ligne5=$ligne5+7
    $ligne6=$ligne6+7
    Dim $ContenuGUIS[6] = [$question, $ans1, $ans2, $ans3, $ans4, $ans5]
EndFunc

func resultats()
    fileopen("Résultats.txt")
    filewrite("Résultats.txt",$question& @CRLF)
    filewrite("Résultats.txt","Réponses cochées :"& @CRLF)
If GuiCtrlRead($CheckBox1) = $GUI_CHECKED Then
filewrite("Résultats.txt",$ans1 & @CRLF)
endif
If GuiCtrlRead($CheckBox2) = $GUI_CHECKED Then
filewrite("Résultats.txt",$ans2& @CRLF)
endif
If GuiCtrlRead($CheckBox3) = $GUI_CHECKED Then
filewrite("Résultats.txt",$ans3& @CRLF)
endif
If GuiCtrlRead($CheckBox4) = $GUI_CHECKED Then
filewrite("Résultats.txt",$ans4& @CRLF)
endif
If GuiCtrlRead($CheckBox5) = $GUI_CHECKED Then
filewrite("Résultats.txt",$ans5& @CRLF)
endif
filewrite("Résultats.txt",""& @CRLF & @CRLF & @CRLF)
endfunc

func decocher()
    guictrlsetstate($Checkbox1,$gui_unchecked)
    guictrlsetstate($Checkbox2,$gui_unchecked)
    guictrlsetstate($Checkbox3,$gui_unchecked)
    guictrlsetstate($Checkbox4,$gui_unchecked)
    guictrlsetstate($Checkbox5,$gui_unchecked)
EndFunc

Opt("GUIOnEventMode", 1)
recupere_infos()
#Region ### START Koda GUI section ### Form=
$Form2 = GUICreate("Questionnaire médecine", 1000, 323, 0, 218)
GUICtrlCreatePic("img.jpg",0,0,1000,500,BitOR($WS_GROUP,$WS_CLIPSIBLINGS))
GUISetOnEvent($GUI_EVENT_CLOSE, "Form2Close")
$Label1 = GUICtrlCreateLabel($question, 32, 8, 1000, 97)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI")
$Checkbox1 = GUICtrlCreateCheckbox($ans1, 24, 128, 1000, 17)
$Checkbox2 = GUICtrlCreateCheckbox($ans2, 24, 150, 1000, 17)
$Checkbox3 = GUICtrlCreateCheckbox($ans3, 24, 172, 1000, 17)
$Checkbox4 = GUICtrlCreateCheckbox($ans4, 24, 194, 1000, 17)
$Checkbox5 = GUICtrlCreateCheckbox($ans5, 24, 216, 1000, 17)
$Button1 = GUICtrlCreateButton("Validation", 72, 264, 411, 25, 0)
GUICtrlSetOnEvent(-1, "Button1Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

While 1
    Sleep(500)
WEnd

Func Button1Click()
    $i=$i+1
if $ii<2 then 
generation_rapport()
endif
if ($i<42) then
resultats()
decocher()  
recupere_infos()
GUICtrlSetData($Label1,$question)
GUICtrlSetData($Checkbox1,$ans1)
GUICtrlSetData($Checkbox2,$ans2)
GUICtrlSetData($Checkbox3,$ans3)
GUICtrlSetData($Checkbox4,$ans4)
GUICtrlSetData($Checkbox5,$ans5)
Else
resultats()
msgbox(0,"Terminé","Le questionnaire est terminé, cliquer sur le fichier texte résultats pour voir les réponses.")
exit
endif
EndFunc

func generation_rapport()
    $ii=$ii+1
    $time = @MDAY &"/"& @MON &"/"& @YEAR &" à "& @HOUR &"H"& @MIN
    fileopen("Résultats.txt")
    filewrite("Résultats.txt","Rapport généré le ")
    filewrite("Résultats.txt",$time& @CRLF& @CRLF& @CRLF)
endfunc
Func Form2Close()
Exit
EndFunc
 
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] 100 GUI (script "multi-GUI"), simplification possibl

#16

Message par matwachich »

Bah c'est pourtant commenté: Je stock les énoncés des questions dans le array, comme ça:

Code : Tout sélectionner

$__questions[0] = nombre total de questions
$__questions[1] = "énoncé permière question"
$__questions[2] = "énoncé 2e question"
$__questions[3] ...
En suite, il faut bien suivre:
- Remarque bien le fichier ini, les question sont numérotées ([1], [2]...)
- et dans le array $__questions, c'est fait en sorte que l'énoncé de la question [1] soit dans $__questions[1] et ainsi de suite

Comme ça, je n'ai pas à stocker toute les réponses de chaque question dans des variables, et me retrouver alors avec des array à plusieurs dimensions ($__questionsReponses[2][6])

Alors comme cela, tout ce que j'ai à faire pour récupérer les réponses de la question en cours c'est:

Code : Tout sélectionner

For $i = 1 To 5
        GuiCtrlSetData(Eval("C_" & $i), IniRead($__ini, $num, "rep" & $i, ""))
    Next
PS: - la fonction Eval retourne la valeur d'une variable représenté par une chaine de caractère, dans cette boucle, elle retournera successivement les valeurs des variables: $C_1, $C_2 ... $C_5, qui correspondent aux checkbox.
- La subtilité est dans le IniRead: je n'ai qu'a renseigner le paramètre "Section" avec le numéro de la question en cours pour récupérer les réponses correspondante.

Grosomodo: je commence par récupérer tous les énoncés et je les stock, puis à chaque question, je récupère les réponses correspondante

Mais pour quoi je parle autan moi??? ah c'est parce que tout à l'heur j'ai balancé un code sans aucun explication et je me rattrape!

Concernant ton code, il est plutôt brouillon! ça ne donne pas envie de le lire!!!
Essai de faire CTRL+T dans Scite avant de poster un code.
D'après le survol que j'ai fait de ton code, il y a plus simple pour stocker les réponses dans un fichier:
► Afficher le texte
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [R] 100 GUI (script "multi-GUI"), simplification possibl

#17

Message par protecta »

Va falloir que je revois les tableaux sérieusement, jamais aimé ça. . . Bon je vais relire ton code, et essayer de m'en inspirer. Mais bon le principal, c'est que ça fonctionne non :P ?
[edit]: tu vas me prendre pour un gros débile mais peu importe, pourrais-tu expliquer plus précisément le script dans son intégralité s'il te plait ? Par exemple : Global $__questions[1] = [0]
Global $__questions[1] => je créer un tableau appelé _questions qui comporte une ligne, c'est bien ça ? Le [0] après, il veut dire que c'est indéterminé ? ...
Global $__ini = @ScriptDir & "\questions.ini" => à quoi sert le @ScriptDir, puisque si je mets uniquement "question.ini", il comprend direct que c'est dans le même répertoire que le script, non ?
Ou alors tu voulais par exemple faire:
Dossier\script.au3
Dossier\Dossier2\questions.ini ?

Ici :
Local $Questions = IniReadSectionNames($__ini)
$__questions[0] = $Questions[0]
Comment tu passes d'une variable à un tableau o_O ?
...
Voilà, des petits trucs comme ça, qui font que j'ai l'impression de ne rien comprendre :mrgreen:
Alors après c'est sûr, on va me dire qu'il faut lire des tuto', seulement c'est avec la pratique qu'on apprend, là en l'occurrence c'est le merdier pour moi, et c'est ça qui fait apprendre, car on n'apprend pas lorsque l'on sait déjà tout :wink:

Par ailleurs, j'ai déjà lu le tuto' sur SdZ, et niveau tableau on voit juste les bases de bases, créer un tableau, sans rapport avec un .ini ou autre. Je ne reproche rien au tuto', loin de là hein, c'est juste pour dire qu'on ne peut pas rencontrer tous les cas de figures dans un tuto', aussi brillant soit-il.

Après, je comprendrais que vous vous lassiez, même si je trouve ça dommage.
Bonne soirée !
Avatar du membre
matwachich
Membre émérite
Membre émérite
Messages : 986
Enregistré le : lun. 19 oct. 2009 04:04
Localisation : Algérie
Status : Hors ligne

Re: [R] 100 GUI (script "multi-GUI"), simplification possibl

#18

Message par matwachich »

NB: j'ai remarqué "Questionnaire de médecine"? lol, j'suis étudiant en médecine aussi!!!

Pour le script:
- $__questions[1] = [0]: Je créer un array avec 1 élément et je donne la valeur 0 au premier élément, c'est à dire, l'élément [0]. On aura:

Code : Tout sélectionner

$__questions[0] = 0
- @ScriptDir, c'est juste une bonne habitude à avoir, certes que dans ce cas, ça ne sert pas à grand chose car le répertoire de travail (Workin Dir) de ton script est de toute façon le sien! Mais parfois, ce n'est pas le cas et il vaut mieux le préciser
- Ensuite, une petite info qui devrai t'aider à décortiquer le script: c'est que dans AutoIt, les arrays sont souvent construit comme suit: (Regarde l'aide des fonctions IniReadSectionNames, StringSplit, par exemple, dans la section Return Value)

Code : Tout sélectionner

$Array[0] = nombre d'éléments du array
$Array[1] = Premier élément
$Array[2] = 2e élément
...
$Array[n] = Elément N
Au fait, vu que j'ai un exam. de maladies infectieuses à préparer, je vais plutôt te laisser décortiquer mon script tout seul!
En plus, ce ne te sera que bénéfique car tu apprendra mieux!
Concentre toi à comprendre en priorité les fonctions: Eval, IniReadSectionNames, IniRead. Puis celle la: GUICtrlSetData, GUICtrlSetState, GUICtrlRead, GUICtrlSetData

PS: un petit exemple pour t'aider
► Afficher le texte
Sortons VW du coté obscure! - La curiosité est un vilain défaut! Cliquez ici
protecta
Niveau 2
Niveau 2
Messages : 22
Enregistré le : sam. 27 nov. 2010 15:37
Status : Hors ligne

Re: [R] 100 GUI (script "multi-GUI"), simplification possibl

#19

Message par protecta »

Ah, non je ne suis qu'en première personnellement, c'est pour ma soeur, qui est en faculté de médecine, voilà pour l'anecdote.
Et pour le code, oui je suis collé devant depuis une demi-heure, et il m'annonce toujours qu'il y a une erreur : $Questions et $Question[0] la ligne en dessous . . . Bonnes révisions :wink:
[edit] : Je pense que je verrais ça demain, à tête reposée, car j'ai dû passer au moins trois heures à lire des codes ("Quoi t'as mis 3 heures pour ton truc pourrave !?" :lol:) et j'en ai assez là :idea: . En tous les cas, merci pour ta patience.
Répondre