[RESOLU] Constante déjà déclarée

Archive.
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

[RESOLU] Constante déjà déclarée

Message par venom »

Bonjour,

sa doit être mon 1er post ici :)
voilà sa fait un moment que j'ai ça mais la sa deviens chiant :

je ne serais pas dire depuis quand mais depuis un moment quand je lance des ancien code avec purebasic genre sa :

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #Frame3D_0
  #Text_0
  #String_0
  #Button_0
  #Text_1
  #String_1
EndEnumeration

If OpenWindow(#Window_0, 0, 0, 270, 130, "Méga to Octet", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
  SetWindowColor(#Window_0, RGB($33, $00, $99))
  If CreateGadgetList(WindowID(#Window_0))
    Frame3DGadget(#Frame3D_0, 10, 5, 250, 115, "")
    
    TextGadget(#Text_0, 20, 30, 75, 20, "chiffre en MO :")
    SetGadgetColor(#Text_0, #PB_Gadget_BackColor, RGB($33, $00, $99))
    SetGadgetColor(#Text_0, #PB_Gadget_FrontColor, RGB(255, 255, 255))
    
    StringGadget(#String_0, 100, 25, 150, 20, "", #PB_String_Numeric)
    SetGadgetColor(#String_0, #PB_Gadget_BackColor, RGB($33, $00, $99))
    SetGadgetColor(#String_0, #PB_Gadget_FrontColor, RGB(255, 255, 255))
    
    ButtonGadget(#Button_0, 20, 55, 230, 20, "calcul")
    
    TextGadget(#Text_1, 20, 85, 75, 20, "resultat en KO :")
    SetGadgetColor(#Text_1, #PB_Gadget_BackColor, RGB($33, $00, $99))
    SetGadgetColor(#Text_1, #PB_Gadget_FrontColor, RGB(255, 255, 255))
    
    StringGadget(#String_1, 100, 80, 150, 20, "", #PB_String_ReadOnly)
    SetGadgetColor(#String_1, #PB_Gadget_BackColor, RGB($33, $00, $99))
    SetGadgetColor(#String_1, #PB_Gadget_FrontColor, RGB(255, 255, 255))
    
  EndIf
EndIf

Repeat
  EventID = WaitWindowEvent()
  If EventID = #PB_Event_Gadget
    Select EventGadget()
        
      Case #Button_0
        TexteMO$ = GetGadgetText(#String_0) ; <--- on renvoie le nombre écrit dans le string_0 ( le chiffre en MO )
        resultat = Val(TexteMO$) * 1024 ; <--- on multiplie le 1er chiffre par 1024
        SetGadgetText(#String_1, Str(resultat)) ; <--- on renvoie le résultat total au string_1
        
    EndSelect
  EndIf
Until EventID = #PB_Event_CloseWindow
rien de bien méchant et bien PureBasic me renvoie une erreur dans l'énumération au début sur #String_0 il me renvoie :
Constante déjà déclarée avec une autre valeur: #String_0 8O

Donc au début je me suis amusé a changer certain ID genre : #String_00 mais a force c'est chiant :?
ceci viens de moi ou pas ?

ps: j'ai windows 7 et PureBasic 4.41 le tout en x64

Mais cela ne m'arrive pas sur tout les codes 8O j'ai du mal a comprendre en faite.
Si ça vous est déjà arrivez :wink:





@++
Dernière modification par venom le mar. 18/mai/2010 5:45, modifié 1 fois.
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
SPH
Messages : 4722
Inscription : mer. 09/nov./2005 9:53

Re: Constante déjà déclarée

Message par SPH »

Moi, sous XP pro, je n'ai pas de bug. Je vois ta jolie fenetre bleue de demander de convertir un chiffre Mo to Octets :wink:
http://HexaScrabble.com/
!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.00 - 64 bits
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Constante déjà déclarée

Message par Backup »

ce n'est pas un bug !!

il s'agit la plupart du temps d'une constante ayant le meme nom
déclaré dans une librairie utilisateur !

désactive tes lib une par une , tu connaitra la coupable ! ;)

ps : chez moi ton code fonctionne parfaitement (meme sous Linux)
G-Rom
Messages : 3626
Inscription : dim. 10/janv./2010 5:29

Re: Constante déjà déclarée

Message par G-Rom »

c'est clair que c'est chiant...
une solution consiste a ne plus utilisé de constante pour les gadgets :

Code : Tout sélectionner

StringGadget(#String_0, 100, 25, 150, 20, "", #PB_String_Numeric)
par

Code : Tout sélectionner

Global gad_String.i = StringGadget(#pb_any, 100, 25, 150, 20, "", #PB_String_Numeric)
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Constante déjà déclarée

Message par venom »

@Dobro

pour ce qui est des lib's je n'en ai aucune dans PureBasic car les 3/4 incompatible x64 :wink: mais en effet ça aurais pu venir de là.


@G-Rom

Merci pour l'exemple mais sa fait depuis juillet 2004 que je code en PureBasic ( façon c'est le seul pour moi :) ) va falloir que j'enleve cette habitude alors :? dut dur :) .
mais comment ont sais avec ta ligne quel gadget porte quel ID ?

ta pas juste un code bidon avec 2 3 gadget histoire que je comprenne le truck stp ?
Merci.

je viens de voir une chose si je vire tout mes énumération au début du code pas de problème cela se lance niquel bizarre non ? 8O ou purebasic ne fonctionne plus comme avant ?

car avant si un gadget n'était pas référencer dans l'énumération PureBasic n'etait pas content :lol: la il dit rien :D
donc en gros je vire tous mes énumération et hop c'est partie.

mon code du départ deviens ce-ci :

Code : Tout sélectionner

;- Window Constants  
If OpenWindow(#Window_0, 0, 0, 270, 130, "Méga to Octet", #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )  
SetWindowColor(#Window_0, RGB($33, $00, $99))  

 Frame3DGadget(#Frame3D_0, 10, 5, 250, 115, "")  
   
 TextGadget(#Text_0, 20, 30, 75, 20, "chiffre en MO :")  
 SetGadgetColor(#Text_0, #PB_Gadget_BackColor, RGB($33, $00, $99))  
 SetGadgetColor(#Text_0, #PB_Gadget_FrontColor, RGB(255, 255, 255))  
   
 StringGadget(#String_0, 100, 25, 150, 20, "", #PB_String_Numeric)  
 SetGadgetColor(#String_0, #PB_Gadget_BackColor, RGB($33, $00, $99))  
 SetGadgetColor(#String_0, #PB_Gadget_FrontColor, RGB(255, 255, 255))  
   
 ButtonGadget(#Button_0, 20, 55, 230, 20, "calcul")  
   
 TextGadget(#Text_1, 20, 85, 75, 20, "resultat en KO :")  
 SetGadgetColor(#Text_1, #PB_Gadget_BackColor, RGB($33, $00, $99))  
 SetGadgetColor(#Text_1, #PB_Gadget_FrontColor, RGB(255, 255, 255))  
   
 StringGadget(#String_1, 100, 80, 150, 20, "", #PB_String_ReadOnly)  
 SetGadgetColor(#String_1, #PB_Gadget_BackColor, RGB($33, $00, $99))  
 SetGadgetColor(#String_1, #PB_Gadget_FrontColor, RGB(255, 255, 255))  
 
EndIf  
Repeat  
EventID = WaitWindowEvent()  
If EventID = #PB_Event_Gadget  
 Select EventGadget()  
    
  Case #Button_0  
  TexteMO$ = GetGadgetText(#String_0) ; <--- on renvoie le nombre écrit dans le string_0 ( le chiffre en MO )  
  resultat = Val(TexteMO$) * 1024 ; <--- on multiplie le 1er chiffre par 1024  
  SetGadgetText(#String_1, Str(resultat)) ; <--- on renvoie le résultat total au string_1  
    
 EndSelect  
EndIf  
Until EventID = #PB_Event_CloseWindow
 
et la impec

@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Avatar de l’utilisateur
case
Messages : 1527
Inscription : lun. 10/sept./2007 11:13

Re: Constante déjà déclarée

Message par case »

ben en fait vu que tes constantes sont deja définie il utilise la ocnstante deja defini comme numero... tu me suis ?

par contre et la ca craint vu que tu ne donne aucune valeur a aucune de tes constantes si certaines ne sont pas définies elles vont avoir la même valeur: 0

et ca vas mettre le souk, la ca vas il n'y a pas énormément de gadgets donc ca peux passer...

le plus simple est encore de coder comme cela comme te l'explique G-rom en global ou pas si le gadget est dans une procédure par exemple...

Code : Tout sélectionner


Text_0=TextGadget(#pb_any, 20, 30, 75, 20, "chiffre en MO :")  

SetGadgetColor(Text_0, #PB_Gadget_BackColor, RGB($33, $00, $99)) 
SetGadgetColor(Text_0, #PB_Gadget_FrontColor, RGB(255, 255, 255)) 

ImageImage
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Constante déjà déclarée

Message par Backup »

non ! c'est pas normal comme comportement !
ça prouve que tes constantes sont deja déclarées quelque part :)
Warkering
Messages : 808
Inscription : ven. 08/janv./2010 1:14
Localisation : Québec, Canada

Re: Constante déjà déclarée

Message par Warkering »

Constantes utilisateurs?
Avatar de l’utilisateur
venom
Messages : 3071
Inscription : jeu. 29/juil./2004 16:33
Localisation : Klyntar
Contact :

Re: Constante déjà déclarée

Message par venom »

@case
oui je te suis :)
Donc le mieux serai de coder comme ma dit G-Rom et ton exemple. ok je vais devoir m'habituer ainsi alors.

@Dobro
Oui comme dit case il se sert de constante je ne sais trop ou pour fonctionné. Mais c'est sa le hic je ne sais pas ou :)
Je vais tenté une réinstall complet de PureBasic ont verra bien.

@Warkering
Tu peut développer un peut :D


EDIT:
J'ai effacer toute trace de PureBasic et j'ai fait une nouvelle installation tout est rentrée dans l'ordre.
Faux rapport de bug donc :oops: :D



@++
Windows 10 x64, PureBasic 5.73 x86 & x64
GPU : radeon HD6370M, CPU : p6200 2.13Ghz
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: [RESOLU] Constante déjà déclarée

Message par Le Soldat Inconnu »

Donc un reste dans un resident ou une userlibrairie

Remarque pour les créateur de userlib : Pour éviter ce souci, une UserLibrairie doit toujours utiliser les #PB_any et jamais de constante
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)]
Répondre