Comment savoir si un StringGadget est vide ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
titraxx
Messages : 10
Inscription : mar. 22/mars/2011 19:25

Comment savoir si un StringGadget est vide ?

Message 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 :)
Avatar de l’utilisateur
case
Messages : 1545
Inscription : lun. 10/sept./2007 11:13

Re: Comment savoir si un StringGadget est vide ?

Message 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()'
ImageImage
titraxx
Messages : 10
Inscription : mar. 22/mars/2011 19:25

Re: Comment savoir si un StringGadget est vide ?

Message par titraxx »

Oui mais si la valeur dans le StringGadget est 0 ce n'est pas vide mais c'est équivalent au "" non ?
Avatar de l’utilisateur
Le psychopathe
Messages : 764
Inscription : jeu. 03/mars/2005 19:23

Re: Comment savoir si un StringGadget est vide ?

Message par Le psychopathe »

if GetGadgetText(#stringgadget) <> ""

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

Re: Comment savoir si un StringGadget est vide ?

Message 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






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

Re: Comment savoir si un StringGadget est vide ?

Message 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
ImageImage
titraxx
Messages : 10
Inscription : mar. 22/mars/2011 19:25

Re: Comment savoir si un StringGadget est vide ?

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

Re: Comment savoir si un StringGadget est vide ?

Message 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=""
~~~~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
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Re: Comment savoir si un StringGadget est vide ?

Message 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
Répondre