Page 1 sur 2

Procédure visu multiformat de variables et tableau

Publié : mar. 17/avr./2007 9:09
par Kwai chang caine
Bonjour à tous.

Je suis en train de faire un code qui remonte des variables assez longues avec noir de retour chariot.
Le bleme c'est que quand je veux voir cette variable, je fais debug ou MessageRequester mais je n'arrive pas à la voir en entier. :?

J'ai donc créé cette petite procédure provisoire que j'utilise le temps de la prog et qui me permet de la voir en entier.
J'en ai profité pour pouvoir faire la meme chose avec un tableau.

Et c'est la que le bas blesse un peu, c'est que je n'ai pas pu mettre le tableau et la variable dans la meme variable à l'entrée de la procedure.
Je visualise donc en premier la variable puis le tableau

J'ai donc une variable Variable$ et une Tablo.s(1) transmise.

Code : Tout sélectionner

Procedure FenetreVisuDonnees(NomFenetre$, Variable$, Tablo.s(1), Hauteur, CouleurTexte, CouleurFond)

 Hwnd = OpenWindow(#PB_Any, GetSystemMetrics_(#SM_CXSCREEN) / 4, GetSystemMetrics_(#SM_CYSCREEN) / 4, 525, Hauteur, NomLogiciel.s + Version.s, #PB_Window_SystemMenu|#PB_Window_MinimizeGadget|#PB_Window_ScreenCentered|#PB_Window_WindowCentered)
 SetWindowColor(Hwnd, CouleurFond) 
 CreateGadgetList(WindowID(Hwnd))
 IdTexte = TextGadget(#PB_Any, 10, 10, 510, 25, NomFenetre$, #PB_Text_Center)
 SetGadgetColor(IdTexte, #PB_Gadget_BackColor, CouleurFond)
 SetGadgetColor(IdTexte, #PB_Gadget_FrontColor, CouleurTexte)
 IdEditor = EditorGadget(#PB_Any, 10, 30, 502, Hauteur - 45)
 SetGadgetText(IdEditor, Variable$)
 TailleTablo.d =  PeekL(@Tablo() - 8) - 1
  
 For i = 1 To TailleTablo
  TexteActuel.s = GetGadgetText(IdEditor) + Chr(13) + Chr(10) + Tablo(i)
  SetGadgetText(IdEditor, TexteActuel)
 Next
  
 Repeat 
  Evenement = WaitWindowEvent()
  Delay(1) 
 Until Evenement = #PB_Event_CloseWindow 
 
EndProcedure

Dim Tableau.s(16)
Tableau(1) = "1ere donnée tableau"
Tableau(2) = "2e donnée tableau"
FenetreVisuDonnees("Titre", "1ere Variable" + Chr(13) + "2e Variable" , Tableau.s(), 600, RGB(255, 255, 255), RGB(126, 101, 129))
Mes questions sont :

1 / Y aurait il possibilité de faire plus simple ?
2 / Peut on passer à la procédure un tableau ou une variable indifféremment ?
3 / Peut on passer à cette procédure indifferement une variable chiffre que string ?

En un mot pouvoir visualiser n'importe quel type de données par la meme procédure qu'elle soit tableau, variable, string ou numérique.

Merci et bonne journée.

Publié : mar. 17/avr./2007 10:19
par brossden
Hello Kwai...

J'ai juste jeté un oeil sur ton code, il me semble bien compliqué effectivement !

Pourquoi par exemple charger un entier long dans une variable double ???

Code : Tout sélectionner

 TailleTablo.d =  PeekL(@Tablo() - 8) - 1 

Ainsi d'ailleurs que le code lui même ????

Essaye d'expliquer plus simplement ce que tu as comme données et ce que tu veux obtenir.

Publié : mar. 17/avr./2007 11:07
par Kwai chang caine
Bonjour BROSSDEN, content de te reparler apres une bonne nuit a décanter tous tes bons conseils :D

Voila comme dab, moins on est fort plus on cherche a faire compliqué, normal ce doit etre un effet de l'ego l'humain.
Un peu comme la connaissance moins on en a, plus on l'étale (Addage bien connu) :lol:
Ce doit etre pour me décompléxé :lol:
Non, en fait je ne le fait pas expres..... :D

Bon pour en revenir a quelque chose de plus serieux et au vif du sujet, "Je m'est trompé" tu as comme dab raison ça rejoint le POST que
je viens de relancer :
http://www.purebasic.fr/french/viewtopic.php?t=6397

Par contre je voulais juste savoir si il y avait moyen de creer une procedure capable de manger tous les styles de données sans qu'elle soit globales.
Comme ça, lorsque je programme, je l'insere dans mon code, je l'appelle quand j'ai besoin de visualiser une variable, quelle soit en tableau numerique ou traditionnelle. Puis quand j'ai fini, je la vire et basta.

Un peu un style de super panneau de debug :wink: mais que pour une variable, car dans le panneau on ne peut pas visualiser une variable de plusieurs 10aine de lignes
A moins que JapBe le fasse .....

Publié : mar. 17/avr./2007 11:18
par Backup
....

Publié : mar. 17/avr./2007 11:23
par Backup
je viens de modifié des petit details que j'avais laissé dans le listing sorry :D

Publié : mar. 17/avr./2007 12:02
par Kwai chang caine
Dans mon exemple je passe directement tout le tableau a la procedure, car j'avais vu avec un code de COMTOIS que c'etait possible.

J'aurais aimé mettre le moins de code a l'exterieur de la dite procedure.

Apparement on ne peut pas passer le tableau dans la procedure hors mis si on le passe par la variable. :cry:

Ce n'est pas grave, je m'etais dis que peut etre y'avait une combine que je ne connaissais pas.

Merci beaucoup de ta reponse DOBRO

Publié : mar. 17/avr./2007 14:22
par brossden
Kwai machin truc chose

Je n'ai pas résolu le problème du tableau (cela ne saurait tarder :wink: ) mais que penses tu de la simplicité du code d'utilisation de ma fonction Trace() ?

Code : Tout sélectionner

; suivant la veleur de etat on peut effacer, ajouter , afficher la liste des variables



Procedure Trace(Titre.s,Colonne.s,etat.s,Variable.s,ColW,ColBL,ColTL)
  Static Liste,NewList Variable.s()
  Select etat
    Case "SUPP"
      ClearList(Variable())
    Case "ADD"
      AddElement(Variable())
      Variable()=Variable
    Case "AFF"  
  ExamineDesktops()
  DH = DesktopHeight(0)
  DW = DesktopWidth(0)
  Handle =OpenWindow(#PB_Any, DW/4, DH / 4, DW/2.5,DH/1.8, Titre,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  CreateGadgetList(WindowID(Handle))
  
  WH = WindowHeight(Handle)
  WW = WindowWidth(Handle)
  SetWindowColor(Handle,RGB (126, 101, 129))  
  Liste = ListIconGadget(#PB_Any, 10, 10, WW-20, WH-45, Colonne, WW-20, #PB_ListIcon_GridLines)
  SetGadgetColor (Liste, #PB_Gadget_BackColor , RGB(0,0,0))
  SetGadgetColor (Liste, #PB_Gadget_FrontColor , RGB(255,255,255))
  ForEach Variable()
      AddGadgetItem(Liste,-1,Variable())
  Next
EndSelect
EndProcedure


; Creation de variables bidons 

Dim tableau.s(8 )
tableau(1) = "1ere donnée tableau"
tableau(2) = "2e donnée tableau"
tableau(3) = "3e donnée tableau"
tableau(4) = "4e donnée tableau"
tableau(5) = "5e donnée tableau"
tableau(6) = "6e donnée tableau"
tableau(7) = "7e donnée tableau"
tableau(8 ) = "8e donnée tableau"

Debug Len(tableau.s())

dobro.b=8
purebasic.l=65000
nom$= "Dobro"


For i=1 To 8
  variable$= tableau(i)
  Trace( "" ,"","ADD",tableau(i),0,0,0)
Next i

; on fait afficher les autre variables
Trace( "" ,"","ADD",Str (dobro.b) ,0,0,0)
Trace( "" ,"","ADD",Str (purebasic.l) ,0,0,0)
Trace( "" ,"","ADD",nom$ ,0,0,0)
Trace("Listes des variables","Variables","AFF","",RGB (126, 101, 129),RGB(0,0,0),RGB(255,255,255))


Repeat  
  Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow

End


Publié : mar. 17/avr./2007 14:44
par Kwai chang caine
J'aime bien les petits noms gentils que tu me donne :D
ça me fait bien rire :lol:

C'est vrai c'est de plus en plus simple.
C'est un peu le meme principe que notre ami DOBRO, il est plus joli.

Si tu trouvais a incorporer un tableau entier ce serait parfait :wink:

Merci de ces petits cadeaux

Publié : mar. 17/avr./2007 14:57
par brossden
regarde surtout au niveau des parametres que tu peux laisser à blanc ou 0 si
tu n'est pas en affichage, je pense que c'est plus rapide à taper que :

FenetreVisuDonnees( "Titre" , Str (dobro.b), 600, RGB (255, 255, 255), RGB (126, 101, 129),1)

Publié : mar. 17/avr./2007 15:01
par brossden
Pour Dobro

Sais tu comment je pourrais avoir le type de la variable que je traite à un instant T

Exemple :

Chaine. s = "....."
Nombre.l = 1524100
Numero.b=3

puis :
type chaine me donnerais "Chaine"
type nombre me donnerais "long"
type Numero me donnerais "Octet"

en passant par l'adresse peut être !!

Publié : mar. 17/avr./2007 15:23
par Kwai chang caine
Ah ok, j'avais pas fait attention, effectivement.......

Tu avais demandé un jour ce genre de question, je ne sais pas si ça peut t'aider ou bien si c'est ce que tu demande, mais y'avait ce lien que tu connais surement

http://www.purebasic.fr/french/viewtopi ... ight=macro

Publié : mar. 17/avr./2007 16:24
par brossden
Je n'y ai pas trouvé mon bonheur !! Merci quand même !

Publié : mar. 17/avr./2007 16:34
par brossden
Kwai machin bidule...

:idea: Si tu utilisais JaPbe tu trouverais tout ton bonheur sans aucun developpement en mode debug tu peux lister la totalité des variables et différencier les tableaux, liste chainées etc ...

:roll:

Publié : mar. 17/avr./2007 16:42
par Kwai chang caine
Bon en bon éleve que je me dois d'etre lorsque l'on a des bons professeurs, je vais essayer jap bidule :D

J'espere que je pourrais transferer tous mes parametres de l'editeur classique.

Je te tiens au courant

Merci

Publié : mar. 17/avr./2007 19:03
par Backup
brossden a écrit :Pour Dobro

Sais tu comment je pourrais avoir le type de la variable que je traite à un instant T

Exemple :

Chaine. s = "....."
Nombre.l = 1524100
Numero.b=3

puis :
type chaine me donnerais "Chaine"
type nombre me donnerais "long"
type Numero me donnerais "Octet"

en passant par l'adresse peut être !!
je viens de passer beaucoup de temps a regarder si je trouvai ça, mais la Rien ! :?

en GFA basic ont avait type=TYPE(*pointeur)
et ça renvoyais le type d'une variable .. :?
c'etait puissant le GFA :D


Fred n'a pas eu la bonne idée de sauver le type des variables, dans leur structure , comme dans le Basic du ZX81 , ou il suffisait d'un Peek bien placer pour savoir a quoi on avait affaire :D