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

:roll:


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

:roll:

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 8O

du reste je trouve quand meme dommage q'uon ne puisse le faire avec des variables :mrgreen:

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 .. :roll:

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. :mrgreen:

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