Data [Resolu]

Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Data [Resolu]

Message 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:
Dernière modification par Backup le sam. 02/juil./2011 20:53, modifié 1 fois.
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Data

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

Re: Data

Message 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 ...
Demivec
Messages : 91
Inscription : sam. 18/sept./2010 18:13

Re: Data

Message 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
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: Data

Message 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  
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Data [resolu]

Message 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 :)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Data [Resolu]

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

Re: Data [Resolu]

Message 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 :)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Data [Resolu]

Message 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:
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Data [Resolu]

Message 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
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Data [Resolu]

Message par anissa »

De toute façon je l'ai fait et ça a marché ! (avec une petite modification)
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Data [Resolu]

Message 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.
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Data [Resolu]

Message 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
Avatar de l’utilisateur
Ar-S
Messages : 9539
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Data [Resolu]

Message 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
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
anissa
Messages : 136
Inscription : mer. 13/oct./2010 15:43

Re: Data [Resolu]

Message par anissa »

Oui, c'est pareil Ar-s, les 2 codes fonctionnent..

ok
Verrouillé