Comment récupérer une caratère dans une chaîne !!

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Orlanth
Messages : 6
Inscription : mar. 10/févr./2004 14:28
Localisation : Nouméa
Contact :

Comment récupérer une caratère dans une chaîne !!

Message par Orlanth »

Bonjour à tous !! :D

Voilà je cherche à récupérer un caractère venant...euh...d'une chaîne de caractère, bien sûr !!! Voilà sous Pascal (Delphi) il suffit de faire comme si la chaîne était un tableau. Ainsi:

Mot="Bonjour"

Mot[3] renvoie donc "n"

mais Purebasic semble si prendre autrement, et ma question est, comment :?:

Merci d'avance !!
brossden
Messages : 831
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Bonjour Orlanth t à tout le monde !

Tu peux essayer avec la fonction Mid(Chaine, Début, Longeur)
Pour reprendre ton exemple :
Mid(Mot,3,1) renverra "n" aussi !!

Salut et Bonne journée !

Denis
Orlanth
Messages : 6
Inscription : mar. 10/févr./2004 14:28
Localisation : Nouméa
Contact :

Remerciement !!

Message par Orlanth »

:D A ça c'est vraiment sympa !! Merci beaucoup Brossden !! J'attendais désespérément une réponse. Je vais l'essayer tout de suite. :D
Orlanth
Messages : 6
Inscription : mar. 10/févr./2004 14:28
Localisation : Nouméa
Contact :

Message par Orlanth »

Bon je vais expliquer pourquoi j'avais besoin de ce petit coup de main. J'essayais de mettre en place un Stringbox qui ne permettrait de saisir que des nombres, alors j'ai décidé de les comparer par leur code ASCII, les chiffres étant chiffrés de 48 à 58, il fallait interdire toute saisie en dehors de ses limites, même si celle ci comportait 30000 chiffres et 1 lettre. Alors il fallait vérifier tout les caractères de la chaîne, et voici mon bout de code:

Code : Tout sélectionner


For i=1 To Len(Chaine$)
          If Asc(Mid(Chaine$,i,1))<48 Or Asc(Mid(Chaine$,i,1))>57
            MessageRequester("Erreur", "Cette chaîne n'est pas conforme",#Pb_messagerequester_ok)
          EndIf          
        Next i
Alors merci encore à Denis pour ce coup de main !!
brossden
Messages : 831
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Je pense que ceci te sera d'une bonne utilité dans ton programme !!!

Code : Tout sélectionner


Procedure Open_Window_0()
  If OpenWindow(0, 318, 80, 204, 76,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Numérique seulement !")
    If CreateGadgetList(WindowID())
      StringGadget(1, 27, 22, 134, 28, "", #PB_String_Numeric); C'est #PB_String_Numeric l'astuce !! 
    EndIf
  EndIf
EndProcedure

Open_Window_0()

Repeat : Until WaitWindowEvent() = #PB_EventCloseWindow



Bonne journée !

Denis
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

j'ai une solution pour détecter si un texte est une valeur numérique ou pas.

donc le problème constaté est le suivant :

Code : Tout sélectionner

Val("0") = 0
Val("abc") = 0 
c'est plutot génant

ma solution est la suivante :
il faut utiliser ceci

Code : Tout sélectionner

Val(Txt.s + "1") 
donc si on a un chiffre :
Txt = "21", on obtient Val("211") <> 0
Txt = "0", on obtient Val("01") <> 0

et si on a un texte
Txt = "kjf", on obtient Val("kjf1") = 0

Par contre, le texte ne doit pas commencer par un chiffre, exemple :
Val("214abc") = 214

mais c'est quand même pratique pour répérer un chiffre dans un code ou une phrase
Dernière modification par Le Soldat Inconnu le mar. 02/mars/2004 12:59, modifié 1 fois.
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)]
brossden
Messages : 831
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

la syntaxe :
StringGadget(1, 27, 22, 134, 28, "", #PB_String_Numeric);
c'est pas plus simple ??
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui, mais pour faire une analyse de code, c'est pas possible, si par exemple tu as : "PureBasic = 34", mon code permet de savoir que le 3ème mot est un nombre dans cette phrase.

tout dépend du cas de figure :wink:
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)]
brossden
Messages : 831
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Le Soldat Inconnu a écrit :oui, mais pour faire une analyse de code, c'est pas possible, si par exemple tu as : "PureBasic = 34", mon code permet de savoir que le 3ème mot est un nombre dans cette phrase.

tout dépend du cas de figure :wink:
Je dois avoir des soucis de comprenette !!!

Le problème initial est de ne permettre que la saisie de valeurs numériques, je ne vois pas dans cette condition ce que vient faire ici "PureBasic = 34" qui est de l'alphanumérique.
Ton programme est peut être utile pour retrouver un nombre au mileu d'un chaine, mais dans ce cas le cahier des charges est différent ! Et il est assez rare de saisir du texte dont on a rien à faire.
Si la frappe est de A123B tu obtiens quoi ....
En général si on limite aux numériques c'est pour éviter les erreurs de saisies !
Bonne journée

Denis
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

je sais que vous parliez de détecter un code numéric entrer dans un stringgadget, je donne juste cette info pour ceux que ça interesse. c'est finis de m'embêter :mrgreen: alala, on peut plus donner de point de vue.

une bonne application de mon code sera dans le cas ou il faut rentrer l'unité en même temps que la valeur. par exemple "10 mm" ou "5 m" ou "2 cm", avec mon code, on peut valider le texte entrée qui dans ce cas n'est pas juste numérique.

si tu veux un exmple, tu demandes :wink:
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)]
brossden
Messages : 831
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Si je comprends bien dans une saisie qui a donné : "Volume = 10 M3 ", tu prends 3 ?????


Aller c'était juste pour le FUN !
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

tusors:
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)]
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message par Anonyme2 »

Je suis comme brossden,

j'ai eu un peu de mal à te suivre Régis :jesors:
brossden
Messages : 831
Inscription : lun. 26/janv./2004 14:37

Message par brossden »

Merci de Prendre ma défence ! :lol:

Je vois qu'entre Denis il y a un soutien solide !!! :lol:
Denis

Bonne Jounée à tous
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

ouin, on me martyrise ici :cry: :jesors:
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