Page 1 sur 2
Data [Resolu]
Publié : sam. 02/juil./2011 10:28
par Backup
c'est quand meme dommage de ne pas pouvoir faire
chemin$="c:\"
toto.i=100
datasection
liste:
Data.s chemin$
Data.i toto
enddatasection
c'est quand meme dommage de ne pas pouvoir faire :
chemin_image$="c:\toto\image\belle_image.jpg"
DataSection
image_fond: IncludeBinary chemin_image$
enddatasection

Re: Data
Publié : sam. 02/juil./2011 14:35
par anissa
Oui ! c'est quand même dommage de ne pas pouvoir faire :
Code : Tout sélectionner
Enumeration
#Var1
#Var2
#Var3
#Var4
#Var5
EndEnumeration
;Plus loin...
for i=1 to 5
SetGadgetText(#Var + str(i), "au secours Fred ")
next
Re: Data
Publié : sam. 02/juil./2011 14:51
par Backup
anissa a écrit :Oui ! c'est quand même dommage de ne pas pouvoir faire :
Code : Tout sélectionner
Enumeration
#Var1
#Var2
#Var3
#Var4
#Var5
EndEnumeration
;Plus loin...
for i=1 to 5
SetGadgetText(#Var + str(i), "au secours Fred ")
next
si c'est pour raconter des conneries , tu vas polluer un autre post Merci !!
les Constantes ne sont pas faite pour etre incrementés
ce ne sont pas des variables !!
il faut faire :
Code : Tout sélectionner
Enumeration
#var
EndEnumeration
;Plus loin...
For i=1 To 5
; SetGadgetText(#var +i, "au secours Fred ") ; <===comme ça
Debug "var"+Str(#var +i )+" au secours Fred " ; ça donne ça
Next
la prochaine fois tu te creer un topic ...
Re: Data
Publié : sam. 02/juil./2011 15:34
par Demivec
Code : Tout sélectionner
#chemin$ = "c:\"
#toto = 100
DataSection
liste:
Data.s #chemin$
Data.i #toto
EndDataSection
#chemin_image$ = "c:\toto\image\belle_image.jpg"
DataSection
image_fond: IncludeBinary #chemin_image$
EndDataSection
Re: Data
Publié : sam. 02/juil./2011 19:56
par Le Soldat Inconnu
Pour Anissa :
Code : Tout sélectionner
Enumeration
#Var
#Var1
#Var2
#Var3
#Var4
#Var5
EndEnumeration
;Plus loin...
for i=1 to 5
SetGadgetText(#Var + str(i), "au secours Fred ")
next
Re: Data [resolu]
Publié : sam. 02/juil./2011 20:00
par Backup
@Demivec :
Merci ! j'etais passé a coté du truc
du reste je trouve quand meme dommage q'uon ne puisse le faire avec des variables
Merci

Re: Data [Resolu]
Publié : sam. 02/juil./2011 22:57
par G-Rom
du reste je trouve quand meme dommage q'uon ne puisse le faire avec des variables
Les datasections sont écrit a la compilation en dur dans l’exécutable dans une section spéciale data, comment veut tu utiliser des variables ? c'est techniquement impossible. c'est comme demander comment changer la valeur d'une constante existante, ca n'a aucun sens

Re: Data [Resolu]
Publié : sam. 02/juil./2011 23:29
par Backup
G-Rom a écrit :du reste je trouve quand meme dommage q'uon ne puisse le faire avec des variables
Les datasections sont écrit a la compilation en dur dans l’exécutable dans une section spéciale data, comment veut tu utiliser des variables ? c'est techniquement impossible. c'est comme demander comment changer la valeur d'une constante existante, ca n'a aucun sens

si ç'est possible !
il suffirai que Purebasic compile en 2 Pass !

et encore ,
lorsque tu fais
toto.s="nunuche"
Debug toto.s
ça t'affiche bien "nunuche"
pourquoi Debug pourrai faire un truc , et pas Data ?
toto.s="nunuche"
datasection
data.s toto.s ; <----- serai remplacé par "nunuche"
enddatasection
de plus on peut faire :
Code : Tout sélectionner
#chemin$ = "c:\"
#toto = 100
DataSection
liste:
Data.s #chemin$
Data.i #toto
EndDataSection
ce serai juste ce petit caractere "#" qui permettrai de le faire ... ?? Hum ...
drole de limitation ..
et pour ton info , l'utilisation des Variables dans les Data , ne date pas d'hier

Re: Data [Resolu]
Publié : dim. 03/juil./2011 9:03
par G-Rom
Bof, je trouve que cela n'a pas de sens.
une fois ton programme compilé , à quoi va servir cette ligne :
toto.s="nunuche"
datasection
data.s toto.s ; <----- serai remplacé par "nunuche"
enddatasection
vu que ton data est déjà écrit , toto.s="nunuche" ne sert plus à rien mis à part prendre de la ram inutilement.
là ca va , car c'est un string assez petit , mais dans le cas de data plus grosse , comme les images par exemple ?
enfin bon , on ne va pas épilogué , c'est pas possible.

Re: Data [Resolu]
Publié : dim. 03/juil./2011 20:38
par anissa
@Le soldat inconnu
Code : Tout sélectionner
Enumeration
#Var
#Var1
#Var2
#Var3
#Var4
#Var5
EndEnumeration
;Plus loin...
for i=1 to 5
SetGadgetText(#Var + str(i), "au secours Fred ")
next
Donc, j'avais raison n'est ce pas? Pour Dobro et G-Rom, je crois qu'il y a un malentendu, ce n'est pas la constance que je veux changer (ça n'a pa de sens comme tu dis), mais je veux juste éviter d'écrire plusieurs fois une instruction que je préfère écrire une seule fois exemple:
Ce que je veux éviter:
Code : Tout sélectionner
SetGadgetText(#Var1,"Valeur de la constante 1")
SetGadgetText(#Var2,"Valeur de la constante 2")
SetGadgetText(#Var3,"Valeur de la constante 3")
SetGadgetText(#Var4,"Valeur de la constante 4")
SetGadgetText(#Var5,"Valeur de la constante 5")
Ce que je souhaite faire:
Code : Tout sélectionner
for i=1 to 5
SetGadgetText(#Var+str(i),"Valeur de la constante " + str(i))
next i
Re: Data [Resolu]
Publié : dim. 03/juil./2011 20:39
par anissa
De toute façon je l'ai fait et ça a marché ! (avec une petite modification)
Re: Data [Resolu]
Publié : dim. 03/juil./2011 20:43
par G-Rom
Code : Tout sélectionner
for i=1 to 5
SetGadgetText(#Var+str(i),"Valeur de la constante " + str(i))
next i
cet impossible à faire, les constantes sont remplacé par les valeur, cela ce passe à la précompilation , donc #var n'existe pas , et à la précompilation str(i) ne vaut rien.
donc impossible.
Re: Data [Resolu]
Publié : dim. 03/juil./2011 21:04
par anissa
Ce qui est impossible c'est ça:
Code : Tout sélectionner
for i=1 to 5
SetGadgetText(#Var+str(i),"Valeur de la constante " + str(i))
next i
Et d'ailleurs je l'ai dit au début pour la simple raison que #Var est une constante et str(i) est une chaîne, or on ne peut pas ajouter une chaine à une constante..
Ce qui est possible et ça marche c'est bien ça:
Code : Tout sélectionner
Enumeration
#ValGad1
#valGad2
#valGad3
#ValGad4
#valGad5
EndEnumeration
Global Dim WValGad(5)
WValGad(1)=#ValGad1
WValGad(2)=#ValGad2
WValGad(3)=#ValGad3
WValGad(4)=#ValGad4
WValGad(5)=#ValGad5
;Plus loin
For i=1 To 5
SetGadgetText(wValGad(i),"Valeur" + str(i))
Next i
Re: Data [Resolu]
Publié : lun. 04/juil./2011 12:00
par Ar-S
Te te compliques la vie Anissa
Tu donnes à tes gadgets un numéro avec l'énumération, c'est le principe même de l'énumération.
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration 0 ; L'enum des gadgets va donc commencer à 0
#ValGad0
#valGad1
#valGad2
#ValGad3
EndEnumeration
donc il faut simplement indiquer dans ta boucle For / Next que i est égale au numéro de ton 1er gadget jusqu'au dernier...
Code : Tout sélectionner
For i = #ValGad0 To #ValGad3
SetGadgetText(i,"Je suis le Gadget "+"#ValGad"+Str(i))
Next
Ce qui donne au final
Code : Tout sélectionner
Enumeration
#Window_0
EndEnumeration
Enumeration 0
#ValGad0
#ValGad1
#valGad2
#valGad3
EndEnumeration
If OpenWindow(#Window_0, 450, 200, 355, 186, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
StringGadget(#ValGad0, 45, 45, 280, 20, "")
StringGadget(#ValGad1, 45, 70, 280, 20, "")
StringGadget(#valGad2, 45, 95, 280, 20, "")
StringGadget(#valGad3, 45, 120, 280, 20, "")
For i = #ValGad0 To #valGad3
SetGadgetText(i,"Je suis le Gadget "+"#ValGad"+Str(i))
Next
MessageRequester("Voilà","finito")
End
EndIf
Re: Data [Resolu]
Publié : lun. 04/juil./2011 21:03
par anissa
Oui, c'est pareil Ar-s, les 2 codes fonctionnent..
ok