[R] Problème de remplissage array

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de remplissage array

#41

Message par mikell »

Si je te le dis :mrgreen:
Maintenant si je te suggère de regarder l'ancien script c'est pas pour des prunes
Par exemple si tous les controles à modifier sont dans une gui child, c'est quand même plus simple, surtout si tu fais des fonctions ^^
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Problème de remplissage array

#42

Message par Hugues »

Je te joins mon code (en partie) fonction principal qui ouvre et trace le graphique, car je n'utilise plus l'autre, je suis parti sur une base differente... Ca évitera trop de messages ^^
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de remplissage array

#43

Message par mikell »

Heu tu comprends bien que je vais pas me taper un nouveau script à chaque fois que tu modifies la mise en forme, eh ?
Ton problème est très simple, c'est juste une question d'organisation (et de boulot) :
- ou tu mets tous les controles dans une gui child dédiée à l'affichage ce qui permet de tout détruire/recréer d'un coup (comme dans mon code précédent)
- ou tu mets tout dans une seule gui mais dans ce cas tu dois gérer la destruction/recréation des controles, par exemple avec des arrays comme ça

Code : Tout sélectionner

;== création échelle v
Dim $labels_echelle_v[$bord_sup/($b/2)+1]
$n = 0
For $i = 0 to $bord_sup step $b/2     
    $labels_echelle_v[$n] = GuiCtrlCreateLabel("", 0, $Hcourbe-$i*$coeffV+3, $left, 20, 2)
    ;....
    $n += 1
Next
;== destruction
For $i = 0 to UBound($labels_echelle_v)-1
   GuiCtrlDelete($labels_echelle_v[$i])
Next
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Problème de remplissage array

#44

Message par Hugues »

Oui c'est sûr que tu n'as pas à te taper un script différent à chaque fois... Et c'est bien normal, à moi de chercher un p'tit peu :mrgreen:

Je vais essayer avec les 2 versions ça va m'occuper :mrgreen:

Merci de ton aide!

A bientôt... :mrgreen: :oops:
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Problème de remplissage array

#45

Message par Hugues »

Coucou, me revoilà...

Alors j'ai remanié mon programme comme tu me l'a vivement conseillé :mrgreen:

Par contre, je n'arrive pas à effacer le GUI "Child" sur lequel est tracé la courbe pfff :oops: :x

J'ai mon GUI principal:
► Afficher le texte
Mon GUI Graphique:
► Afficher le texte
Alors pour effacer le graphique, je fais:
► Afficher le texte
Mais ça me ferme le GUI principal??? :shock: :shock:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de remplissage array

#46

Message par mikell »

Vaut mieux déclarer les variables en Global en tête de script et en-dehors des fonctions
Et si tu mets des styles à la place des exstyles tu peux avoir des 'unexpected results' :mrgreen:

Code : Tout sélectionner

$child = GUICreate("", 169, 68, 20, 20, $WS_POPUP, [color=#FF0000]BitOR($WS_POPUP, $WS_CLIPSIBLINGS)[/color], $MainGUI)
$child = GUICreate("courbe", 169, 68, 20, 20, $WS_POPUP, BitOR($WS_EX_MDICHILD, $WS_EX_COMPOSITED), $MainGUI)
Difficile d'en dire plus sans voir le reste du script (par exemple une possible erreur ailleurs qui peut entrainer un Exit) mais si tu suis l'architecture du code de mon post précédent (en haut de la page) tu ne devrais pas avoir de problème
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Problème de remplissage array

#47

Message par Tlem »

Basé sur vos informations, ce script fonctionne :
► Afficher le texte
Regardez si votre problème ne vient pas des styles affectés à votre GUI fille. Le $WS_POPUP en trop peut être.
Et déclarez vos variables globales en tête de script et non dans des fonctions => risque de message d'erreur et gestion moins simple.

Edit : Grillé par Michel. :'(
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Problème de remplissage array

#48

Message par Hugues »

Merci pour vos réponses, mais je dois vraiment être idiot...
J'ai beau y tourner dans tout les sens, il y a toujours quelque chose qui ne fonctionne pas...

Je vous joint mon code "presque complet" car j'ai enlevé une partie du code qui contient des données sensibles ^^, mais la structure est complète.

Je suis vraiment désolé de vous faire perdre votre temps... :oops:
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de remplissage array

#49

Message par mikell »

Tu aurais pas le même qui fonctionnerait avec un fichier local ? c'est pas testable là
BTW en mode onevent GUIGetMsg ne marche pas (j'ai fait la même erreur dans mon code, faut mettre un While)

Code : Tout sélectionner

While 1
    If WinExists($child) And $NoCurveToTrace = False Then
    _Display()
    Sleep(10)
  EndIf
Wend
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Problème de remplissage array

#50

Message par Hugues »

Je comprends plus rien ^^.

Si j'ouvre un fichier et qu'il n'y a pas de données pour tracer une courbe avec

Code : Tout sélectionner

If WinExists($child) Then GUIDelete($child)
ça ferme mon GUI général, mais pas l'application...

Si j'ouvre un fichier avec des données, ma courbe est bien tracé cooool,
Si j'ouvre après un fichier qui n'a pas de données pour tracer des courbes, ça supprime bien mon ancien graphique... :shock:

En fait je crois et suis sur que les graphique se superposent ^^ car quand j'ouvre de fichier avec données ca me trace bien mes courbes et si dans la foulée j'ouvre un fichier sans données ça me réaffiche mon grahique precedent...

Je sais pas si je me suis bien exprimé... :oops:
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Problème de remplissage array

#51

Message par mikell »

Tes problèmes ont plusieurs causes
- si la gui fille n'est pas créée, $child = "", ta condition devient 'If WinExists("") Then ...' ce qui est toujours vrai et dans ce cas le GuiDelete va fermer la dernière gui utilisée, la principale (default is the previous used)
Un petit test marrant

Code : Tout sélectionner

Local $var = WinList(), $n = 0
For $i = 1 To $var[0][0]
    If $var[$i][0] = "" Then $n += 1
Next
MsgBox(0, "Details", "Il y a actuellement " & $n & " fenêtres sans titre ouvertes")
solution : If WinExists("titre_de_la_gui_fille") Then GUIDelete($child)
- gestion d'erreur et réinitialisation : le script conserve des données et les réutilise même en cas d'erreur
solution : penser à vider l'array de données, et introduire un booléen pour valider la reconstruction de l'array et de la gui après lecture du fichier

Pour info... j'ai édité le code ici http://www.autoitscript.fr/forum/viewto ... 013#p81013 pour y mettre la gestion d'erreur adéquate (variable-test $fichierOK et vidage de l'ancienne array) que j'avoue n'avoir pas faite initialement vu que ce n'était qu'un code de démo
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Hugues
Niveau 8
Niveau 8
Messages : 597
Enregistré le : ven. 21 sept. 2012 18:12
Status : Hors ligne

Re: [..] Problème de remplissage array

#52

Message par Hugues »

YES! J'ai fais un joli "pot pourri" et ça fonctionne. Le graphique s'efface bien maintenant!
Un grand merci à toi et à Tlem (normalement je n'ai oublié personne ^^)
Je peux dire RESOLU.

UN GRAND MERCI :mrgreen:
Répondre