Procédure visu multiformat de variables et tableau

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Procédure visu multiformat de variables et tableau

Message 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.
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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.
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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 .....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

....
Dernière modification par Backup le mar. 19/août/2014 14:32, modifié 1 fois.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

je viens de modifié des petit details que j'avais laissé dans le listing sorry :D
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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

Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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)
Dernière modification par brossden le mar. 17/avr./2007 16:24, modifié 1 fois.
Denis

Bonne Jounée à tous
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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 !!
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Je n'y ai pas trouvé mon bonheur !! Merci quand même !
Denis

Bonne Jounée à tous
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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:
Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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
Répondre