Caractère non pris en charge par l'EDI

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
gibet_b
Messages : 13
Inscription : lun. 03/déc./2012 18:15
Localisation : Au coeur des Combrailles (63)
Contact :

Re: Caractère non pris en charge par l'EDI

Message par gibet_b »

falsam a écrit :Si cette astuces fonctionne chez toi, alors le code suivant fonctionne aussi :)
Eh bien non, après vérification, elle ne fonctionne pas sous Mac ! Et "l'équivalent", la palette de caractère, a le même effet que lorsque je copie/colle : un point d'interrogation pour certains signe de ponctuation...

Je pense que je vais créer une fonction qui permet de vérifier si un chiffre est compris dans une série d'intervalles. Ça peut toujours être utile, et je viendrai la mettre ici.
Jean-Baptiste,
Développement logiciel, infographie, livres numériques et sites internet en Auvergne : www.bournisien.info
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Caractère non pris en charge par l'EDI

Message par falsam »

gibet_b a écrit :Eh bien non, après vérification, elle ne fonctionne pas sous Mac ! Et "l'équivalent", la palette de caractère, a le même effet que lorsque je copie/colle : un point d'interrogation pour certains signe de ponctuation...
Je pense que je vais créer une fonction qui permet de vérifier si un chiffre est compris dans une série d'intervalles. Ça peut toujours être utile, et je viendrai la mettre ici.
N'ayant pas de mac je ne pouvais pas tester.

Le code précédent fonctionne pas sous Mac OS ?

Pourrais tu préciser dans ta signature que tu es sous Mac Os ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Caractère non pris en charge par l'EDI

Message par falsam »

gibet_b a écrit :Je pense que je vais créer une fonction qui permet de vérifier si un chiffre est compris dans une série d'intervalles.
Exemple
Tester un nombre compris entre 20 et 39 (ne necessite pas forcement un regex)

Code : Tout sélectionner

*RegMatch = CreateRegularExpression(#PB_Any ,"([2-3][0-9])")
Debug MatchRegularExpression (*RegMatch, "35") ; Retournera vrai
Debug MatchRegularExpression (*RegMatch, "15") ; Retournera faux
Combiné avec ou "|" : Tester un nombre compris entre 20 et 39 ou 50 et 75

Code : Tout sélectionner

*RegMatch = CreateRegularExpression(#PB_Any ,"([2-3][0-9]|[5-7][0-5])")
Debug MatchRegularExpression (*RegMatch, "71") ; Retournera vrai
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Caractère non pris en charge par l'EDI

Message par Backup »

gibet_b a écrit :Bonjour à tous,

Comme je l'ai dit dans un autre sujet, je me frotte à PureBasic, en transposant une petite application que j'ai créé pour aider ma femme à faire des textes à trous.

Je parcours le texte soumis caractère par caractère, et pour détecter s'il s'agit d'un caractère de ponctuation, voilà comment je faisais sous RealBasic :

1/ Je déclarais une constante contenant tous les signes de ponctuation (ou en tout cas ceux qui m'intéressent) :

Code : Tout sélectionner

Const PONCTUATION = ".,;?!()"“”«»':-—–’"
2/ Je vérifiais si le caractère en cours figurait dans la contante pour savoir si c'était un signe de ponctuation :

Code : Tout sélectionner

If InStrB(PONCTUATION,caractere) > 0
Le hic, c'est que certains caractère sont remplacés par des "?" lorsque je copie/colle dans l'EDI de RealBasic. Notamment, une des deux formes d'apostrophe( ’ ), mais aussi les différents tirets ( — et – ) et certaines formes de guillemets( “” ).


hum , d'une façon plus traditionnel de coder (sans RegEx) , la Fonction Findstring() peut etre indiqué pour ce type de recherche


ce code retourne le caractere recherché, ainsi que sa position dans la phrase (ou le Text )
facile a partir de la de coder un "remplacement" (replacestring())
ou bien n'importe quoi d'autre ...
ps: j'ai laissé ta Phrase de caracteres...tel quelle ...

on peut aussi ajouter une contrainte de recherche qu'a partir du Xem caractere du text ..

ça reste tres rapide, meme si c'est pas du Regex ... ;)


pour éviter les "?" compile en Unicode ... ;)


Code : Tout sélectionner

Declare.s recherche_ponctuation(text.s)

text.s=" Toto est (perdu), ou bien 'trouvé' ? "
MessageRequester("info", recherche_ponctuation(text.s))






procedure.s recherche_ponctuation(text.s)
	PONCTUATION.s = ". , ; ? ! ( ) ? ? « » ' : - ? ? ? "+chr(34)
	for i=1 to len(PONCTUATION.s)
		x_car.s=StringField(PONCTUATION.s,i," ")
		pos=findstring(text.s,x_car.s,1)
		if pos<>0
			resultat.s=" le caractere : "+" '"+x_car.s+"' "+ "a été trouvé a la position :"+str(pos)+chr(10)+"  Dans la phrase :"+chr(10)+text.s
			ProcedureReturn resultat.s
		endif
	next i
EndProcedure
; EPB
Avatar de l’utilisateur
graph100
Messages : 1318
Inscription : sam. 21/mai/2005 17:50

Re: Caractère non pris en charge par l'EDI

Message par graph100 »

gibet_b a écrit :Etant donné que lorsque je copie/colle certains caractères dans l'EDI, ils sont remplacés par des « ? », je ne peux pas faire un simple :

Code : Tout sélectionner

IF caractère = "—"
(ou une quelconque recherche de ce caractère dans une chaine composée de tous les signes de ponctuation qui m'intéresse)

Mon idée est donc de voir si le code ASCII du caractère saisi par l'utilisateur se situe dans telle ou telle plage, ou s'il est égal à telle valeur.
Je viens de penser que tu n'as pas besoin d'écrire les caractère en 'dur' dans ton code !
Il te suffit d'initialiser ta chaine avec la fonction Chr(), par exemple, j'ai souvent besoin de mettre des guillemets dans une chaine, sauf que Pb reconnais les guillemets comme un délimiteur de chaine. Je sais qu'il y a une constante qui a la valeur des guillemets mais je ne m'en rappelle jamais, donc j'écris ça :

Code : Tout sélectionner

TXT.s = "une petite citation : " + Chr(34) + "Les regex sont pratiques" + Chr(34)
Debug TXT
Donc pour écrire : "un texte «entre» guillemets"

Code : Tout sélectionner

TXT.s = "un texte "+Chr(171)+"entre"+Chr(187)+" guillemets"
Et comme le dit Dobro, si tes caractères sont de l'unicode, il ne faut pas oublier à compiler en unicode
_________________________________________________
Mon site : CeriseCode (Attention Chantier perpétuel ;))
Répondre