Page 1 sur 2
Comment récupérer une caratère dans une chaîne !!
Publié : mar. 02/mars/2004 7:16
par Orlanth
Bonjour à tous !!
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 !!
Publié : mar. 02/mars/2004 7:28
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
Remerciement !!
Publié : mar. 02/mars/2004 8:14
par Orlanth

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.

Publié : mar. 02/mars/2004 8:28
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 !!
Publié : mar. 02/mars/2004 9:39
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
Publié : mar. 02/mars/2004 9:52
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 :
c'est plutot génant
ma solution est la suivante :
il faut utiliser ceci
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
Publié : mar. 02/mars/2004 9:57
par brossden
la syntaxe :
StringGadget(1, 27, 22, 134, 28, "", #PB_String_Numeric);
c'est pas plus simple ??
Publié : mar. 02/mars/2004 12:58
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

Publié : mar. 02/mars/2004 14:17
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

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
Publié : mar. 02/mars/2004 14:26
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

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

Publié : mar. 02/mars/2004 14:31
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 !
Publié : mar. 02/mars/2004 15:28
par Le Soldat Inconnu
Publié : mar. 02/mars/2004 15:41
par Anonyme2
Je suis comme brossden,
j'ai eu un peu de mal à te suivre Régis

Publié : mar. 02/mars/2004 16:08
par brossden
Merci de Prendre ma défence !
Je vois qu'entre Denis il y a un soutien solide !!!

Publié : mar. 02/mars/2004 18:55
par Le Soldat Inconnu
ouin, on me martyrise ici
