Page 1 sur 1

Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 19:42
par titraxx
Bonjour !

Je me suis mis récemment au PureBasic et j'apprends petit à petit.

Aujourd'hui j'ai débuté un programme mais j'ai besoin d'une aide par rapport à la fonction StringGadget.
Elle est en mode numeric et je cherche comment savoir si le champ est vide ? (mais la valeur rentrée peut être 0)
J'ai cherché sur le forum mais je n'ai pas trouvé. Par contre cette recherche m'a permis de savoir comment centrer le texte !

Merci de votre aide :)

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 19:52
par case
le string gadget renvoie une chaine donc si c'est vide ca renvois une chaine vide "" en mode numérique ou pas.
pour utiliser la valeur entrée au clavier il est nécessaire de transformer la chaine en nombre avec la fonction 'val()'

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 19:59
par titraxx
Oui mais si la valeur dans le StringGadget est 0 ce n'est pas vide mais c'est équivalent au "" non ?

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 20:17
par Le psychopathe
if GetGadgetText(#stringgadget) <> ""

@+

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 20:34
par venom
Aller un petit code avec explication dedans :wink:

Code : Tout sélectionner

;- Window Constants
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
Enumeration
  #String_0
  #Button_0
EndEnumeration

  If OpenWindow(#Window_0, 220, 0, 190, 70, "",  #PB_Window_SystemMenu | #PB_Window_TitleBar | #PB_Window_ScreenCentered )
   StringGadget(#String_0, 10, 10, 170, 20, "")
    ButtonGadget(#Button_0, 10, 40, 170, 20, "test si le string est vide")
  EndIf
  
  Repeat
   EventID = WaitWindowEvent()
    If EventID = #PB_Event_Gadget
      Select EventGadget()
        
       Case #Button_0 ;<---- ont fait un appuie sur le bouton et ont passe a la suite.
        If GetGadgetText(#String_0) = "" ;<---- test si le string est vide grace au "" si il est vide il passa a la ligne suivante tu pe y mettre ce que tu veut. Si il n'est pas vide, il saute a la ligne Elseif
         MessageRequester("Info", "le string est vide", 0)
        ElseIf GetGadgetText(#String_0) ;<---- si il n'est pas vide le code arrive directement ici et lance ce que tu a mis dessous jusqu'a endif. Là c'est un messagerequester. ;)
         MessageRequester("Info", "le string n'est pas vide", 0)
        EndIf 
          
      EndSelect
    EndIf
  Until EventID = #PB_Event_CloseWindow






@++

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 20:35
par case
titraxx a écrit :Oui mais si la valeur dans le StringGadget est 0 ce n'est pas vide mais c'est équivalent au "" non ?
non

0 c'est "0" vide c'est ""

le stringgadget ne revoie pas un nombre mais une chaine de caractères en mode numérique il permet seulement la saisie de nombres . mais renvoi toujours une chaine

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 20:51
par titraxx
Merci pour toutes vos explications, j'ai compris mon erreur. Je passais par une valeur numérique :

Code : Tout sélectionner

entree=Val(GetGadgetText(#String_0)) 
If entree <> Val("")
...
C'était assez bête comme problème ! Mais à force de rester devant l'ordi à coder je n'ai plus l'esprit clair :lol:

C'est agréable d'avoir des gens qui aident et des réponses si rapidement !
Quand j'aurais fini mon programme je le posterai afin d'avoir vos avis :)
Bonne soirée et à bientôt ! (oui, je reviendrais ! :twisted: )

Re: Comment savoir si un StringGadget est vide ?

Publié : mar. 22/mars/2011 23:12
par Ar-S
Salut,
Pour être précis, et pour les (tout) nouveaux.

ton gadget #string_0 va avoir un identifiant, un numéro qui va lui être attribué.
Le contenu de ton gadget "entree" peut être décrit comme une valeur numéraire (rique?) ou comme une chaine de caractères.

Si tu écris :

entree$ = ... ici on attend une chaine de caractère, que ce soit "toto" ou "1234" ou même "t1o2t3o"
entree.s = même chose (le .s pour "string" tiens !)

entree = ... attendra un chiffre (sans guillemets !), il faut donc que les chaines entrées soient des chiffres. Tu peux très bien forcer la chose en ajoutant #PB_String_Numeric en option à la création de ton string gadget.
entree.b ou .i .l etc.. sont fait pour ça aussi, je te laisse regarder l'aide pour les différentes utilités.

Le tout est de bien comprendre que tu peux faire
entree.s = "5+5"
et
entree = 5+5

te donneront les résultats :
"5+5" pour entree.s
10 pour entree

Dans tous les cas, tu vides le contenu en ecrivant
entree.s=""
ou
entree=""

Re: Comment savoir si un StringGadget est vide ?

Publié : mer. 23/mars/2011 8:57
par MLD
Salut titraxx
Bienvenu parmis nous
Un petit code qui teste si leStringGadget est vide ou a 0 :D

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 400 , 200, "StringGadget", #PB_Window_ScreenCentered | #PB_Window_SystemMenu )
   StringGadget(1,10,50, 280, 20,"",#PB_String_Numeric) 
    ButtonGadget(2, 200, 150, 100,30,"OK")
 
    Repeat
      Event = WaitWindowEvent()
       Select EventGadget()
        Case 2
         a$ = GetGadgetText(1)
         If a$ = "" Or a$ = "0"
          Debug "Tu a zéro ou rien dans le StrinGadget"
         EndIf  
       EndSelect
    
    Until WaitWindowEvent() = #PB_Event_CloseWindow
    
EndIf
Amuse toi bien avec PB.Tu verras les possibilités sont immenses .
Michel