Parseur
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Bonjour,
Dans le cadre de mes réalisations en cours (créateur de formules pour un requêteur) je dois monter un parseur de chaine pour effectuer des contrôles logiques...

Merci de toute information exploitable sur le sujet. Je cherche à valider ma formule et pourquoi pas assister sa saisie en effectuant des contrôles au fil de la saisie.

Contribution le : 20/04/2005 11:45
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Parseur
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
OK, en utilisant l'exemple de notre article sur la compilation dynamique et y ajoutant l'interception des erreurs (dont la division par zéro), j'ai pu mettre en place une validation des formules avec message d'erreur adapté.

Je laisse donc au compilateur WinDev sa tâche... avec juste un soucis ultérieur pour la traduction des messages.

Questions subsidiaires :
la fomule est dans une zone de saisie en affichage seul et sélection possible. Le remplissage est réalisé par interception des touches comme dans l'exemple de la calculette euro.
Les rubriques ajoutée à la formule sont identifiée par des séparateur < et > :

Comment intercepter les dépacement du carret / surseur (via les touches ou la souris) et identifier que l'on est situé dans le texte d'une rubrique (ou que la sélection en contient une) ?
Une recherche des position précédente des < ou > et un savant calcul semble la voie...

Contribution le : 20/04/2005 17:04
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer


Re: Parseur
Animateur WDF
Inscrit:
26/06/2002 16:24
De wdforge.org
Post(s): 2822
Pour la question subsidiaire, la solution tient dans l'utilisation des evènements de relache de bouton souris et touches et une gestion des propriétés ..Curseur et ..FinCurseur :
Lancée dans les évènements WM_KEYUP et WM_LBUTTONUP du champ sFormule, le code suivant assure la sélection de la 'balise' quand le curseur y pénètre.
// indique si la position en cours est une rubrique
// assure alors la sélection de la balise entière
PROCEDURE EstRubrique()
nPD=sFormule..Curseur
nPF=sFormule..FinCurseur
npEntrée,npSortie est un entier
// balises avant la position courante
npEntrée = Position(sFormule,"<",nPD-1,DepuisFin)
npSortie = Position(sFormule,">",nPD-1,DepuisFin)
SI npSortie<npEntrée ALORS
	// la balise est ouverte avant la position courante
	// on modifie alors les positions de la sélection
	nPD=npEntrée
	nPF = Min(Position(sFormule,">",nPF,DepuisDébut),Taille(sFormule))+1
FIN
// affecte les valeur de sélection (modifiées ou pas)
sFormule..Curseur=nPD
sFormule..FinCurseur=nPF


Un dernier point minime : la gestion du retour arrière répété du curseur qui ne saute pas la sélection mais la parcourre.

Contribution le : 21/04/2005 08:55
_________________
R&B
Contact, CV.
Créer un fichier PDF de la contribution Imprimer



 Haut   Précédent   Suivant




Enregistrer votre réponse
CompteNom   Mot de passe   Authentification
Message:


Vous ne pouvez pas débuter de nouveaux sujets.
Vous pouvez voir les sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Connexion
Menu
Chercher WDForge
Chercher Web
Partenaires
Visualiser tous les Partenaires...
WinDev, WebDev, WinDev Mobile et HyperFile sont des marques déposées par PCSoft. |  Voter |  Legal |  Contact |   XOOPS 2.0.13.2