FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Planétarium virtuel.
par Pedro Alvarez Aujourd'hui à 16:57

» Roues dentées
par jean_debord Aujourd'hui à 10:40

» Attention arnaque !
par mindstorm Jeu 19 Juil 2018 - 19:18

» Qui fait quoi ?
par silverman Mer 18 Juil 2018 - 15:21

» ITEM_SELECT N,L pour synedit
par silverman Mer 18 Juil 2018 - 15:20

» Boussole
par jean_debord Mer 18 Juil 2018 - 11:06

» Roue à n faces
par Marc Dim 15 Juil 2018 - 22:16

» Exemple d'une nouvelle version d'un GRID
par Jean Claude Ven 13 Juil 2018 - 10:32

» Une simple question
par Oscaribout Sam 7 Juil 2018 - 23:20

» BUG sur l'objet TAB
par Jack Sam 7 Juil 2018 - 21:12

» Monopoly moderne
par jjn4 Sam 7 Juil 2018 - 15:06

» Récapitulatif ludothèque panoramic jjn4
par jjn4 Ven 6 Juil 2018 - 17:41

» Lignes ondulées
par JL35 Ven 6 Juil 2018 - 17:39

» bug off_activate 0 : sans d'effet
par silverman Ven 6 Juil 2018 - 13:02

» Position des objets d'un conteneur dans FBPano et Panoramic
par Navigateur Ven 6 Juil 2018 - 12:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2018
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Besoin d'une commande de lecture de mots individuels.

Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

Nombre de messages : 1104
Date d'inscription : 19/01/2014

MessageSujet: Besoin d'une commande de lecture de mots individuels.   Sam 8 Avr 2017 - 5:28

Bonjour.

J'aurais encore besoin d'une commande qui lirait les mots individuels d'une chaîne de caractères quelconque, et les placerait dans un objet combo ou autre.
Cette commande existant dans d'autres basics: SplitTokens.

Exemple:

Le chat boit du lait.

La combo contiendrait, après traitement:

le
chat
boit
du
lait


Le traitement de la chaîne ne doit pas tenir compte des ponctuations, ni des mots commençant par un chiffre.
Ce qui signifie que chacun des mots doit débuter par un caractère alphabétique.

Est-ce faisable ?

Merci de la suite.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Sam 8 Avr 2017 - 9:52

Oui. Je vais voir ça...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Sam 8 Avr 2017 - 11:57

C'est fait. Regarde la nouvelle version de KGF.dll de ce jour.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1104
Date d'inscription : 19/01/2014

MessageSujet: Besoin d'une commande de lecture de mots individuels.   Sam 8 Avr 2017 - 19:01

Bonsoir.

Encore merci Klaus de ta rapidité.
Cette nouvelle fonction accélère encore un peu plus mon logiciel de traduction.

C'est tout simplement génial.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Sam 8 Avr 2017 - 21:34

Je viens de penser à un truc:
puisque cette nouvelle fonction est detinée à servir dans un cadre de logiciel de traduction, il y a peut-être un problème de jeu de caractères ? Je m'explque:

Je filtre tout ce qui n'est pas du texte et je ne transmets au résultat que les caractères de texte pur. Or, j'ai choisi les minuscules accentuées françaises: 'à','â','é','ê','ë','è','î','ï','ô','ù','û','ç'. Et si la chaîne à analyser est dans une autre langue ? Quels sont les caractères à considérer ?

Plus généralement, ne serait-ce pas judcieux d'avoir une deuxième fonction qui définirait le jeu de caractères considérés comme "texte". Ce choix serait mémorisé et utilisé par la fonction IsolateWordsFromString, jusqu'à ce qu'un autre appel de la deuxième fonction remplace le jeu de caractères. Ou est-ce que je suis compplètement à côté de la plaque ?

EDIT

Et qu'est-ce qu'il en est avec des mots comme aujourd'hui et grand-mère ?

EDIT

Actuellement, ça marche comme ça:


Et si l'on faisait comme ceci:


Quelle solution est préférable ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 3:23

Bon, dans le doute, je rends les choses paramétrables, avec la situation actuelle comme valeurs par défaut, présentes automatiquement. Je publierai la nouvelle version demain... enfin aujourd'hui, car nous sommes déjà demain, en fait !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1104
Date d'inscription : 19/01/2014

MessageSujet: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 8:35

Bonjour.

Je rencontre un gros problème avec cette nouvelle commande.
Pourrais-tu réaliser un test de ton côté, comme suit:

- Avec la même chaîne de caractères dans le mémo, analyser la chaîne et la placer dans la combo.
- A la lecture du fichier 'mots.txt', on s'aperçoit que l'enregistrement du contenu de la combo laisse apparaître des lignes vides, ce qui fausse le traitement de mon programme par la suite.
Il semblerait qu'un retour chariot soit placé entre chaque mot.
- De plus, certains mots en fin de ligne sont mal lus, car ils se trouvent à la fin d'un item du memo.
On retrouve des mots accolés les uns aux autres.

Merci de la suite Klaus.

Code:
' test_IsolateWordsFromString.bas

label analyser

dim res%, txt$

dll_on "KGF.dll"


maximize 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Chaîne de caractères à analyser:"
edit 2 : top 2,30 : left 2,10 : width 2,400

alpha 3 : top 3,60 : left 3,10 : caption 3,"Résultat dans:"
option 10 : top 10,80 : left 10, 10 : caption 10,"Clipboard"
option 11 : top 11,80 : left 11,110 : caption 11,"Memo"
option 12 : top 12,80 : left 12,210 : caption 12,"Combo"
option 13 : top 13,80 : left 13,310 : caption 13,"List"

button 20 : top 20,110 : left 20,10 : caption 20,"Analyser" : on_click 20,analyser

memo  21  : left 21,10  : top 21,140 : width 21,300 : height 21,400 : bar_both 21
combo 22  : left 22,310 : top 22,140 : width 22,300 : height 22,400
list  23  : left 23,620 : top 23,140 : width 23,400 : height 23,600
font_size 23,12
font_bold 23


item_add 21,"Là ! Voilà Jean. Jean est là. Voilà Charles. Charles est là. Mme Schimtt est là. Voilà M. Schmitt. Voici Jean. Voilà Charles."
item_add 21,"Voici Kiel. Voilà Vienne. Kiel est ici. Vienne est là. Voici Mme Schmitt. Voilà M. Schmitt. Mme Schmitt est ici. M. Schmitt est là."
item_add 21,"Là-bas! Voilà Bonn. Voilà Rome. Jean est là. Charles est là-bas. Jean est là-bas. Voilà Charles. Voilà M. Schmitt."
item_add 21,"Voici Vienne. Voilà Rome. Voilà Kiel. Mme Schmitt est ici. Hans est là. Charles est là-bas. Voici Mme Schmitt. Voilà Jean. Voilà Charles."

end

analyser:
  txt$ = text$(21)
  
  clear 22
  clear 23
  if checked(10)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),0,0)
    clipboard_paste 21
  end_if
  if checked(11)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),1,handle(21))
  end_if                                                                                                                    
  if checked(12)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),2,handle(22))
    file_save 22,"mots.txt"
  end_if
  if checked(13)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),3,handle(23))
  end_if

  message str$(res%)+" mots trouvés"
  
  return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 10:27

Cela vient de la façon dont tu construis ta vriable txt$. Remplace
Code:
  txt$ = text$(21)
par
Code:
  txt$ = ""
  for i%=1 to count(21)
    txt$ = txt$ + item_read$(21,i%) + " "
  next i%
et ça marchera. Ton code devient:
Code:
' test_IsolateWordsFromString.bas

label analyser

dim res%, txt$, i%

dll_on "KGF.dll"


maximize 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Chaîne de caractères à analyser:"
edit 2 : top 2,30 : left 2,10 : width 2,400

alpha 3 : top 3,60 : left 3,10 : caption 3,"Résultat dans:"
option 10 : top 10,80 : left 10, 10 : caption 10,"Clipboard"
option 11 : top 11,80 : left 11,110 : caption 11,"Memo"
option 12 : top 12,80 : left 12,210 : caption 12,"Combo"
option 13 : top 13,80 : left 13,310 : caption 13,"List"

button 20 : top 20,110 : left 20,10 : caption 20,"Analyser" : on_click 20,analyser

memo  21  : left 21,10  : top 21,140 : width 21,300 : height 21,400 : bar_both 21
combo 22  : left 22,310 : top 22,140 : width 22,300 : height 22,400
list  23  : left 23,620 : top 23,140 : width 23,400 : height 23,600
font_size 23,12
font_bold 23


item_add 21,"Là ! Voilà Jean. Jean est là. Voilà Charles. Charles est là. Mme Schimtt est là. Voilà M. Schmitt. Voici Jean. Voilà Charles."
item_add 21,"Voici Kiel. Voilà Vienne. Kiel est ici. Vienne est là. Voici Mme Schmitt. Voilà M. Schmitt. Mme Schmitt est ici. M. Schmitt est là."
item_add 21,"Là-bas! Voilà Bonn. Voilà Rome. Jean est là. Charles est là-bas. Jean est là-bas. Voilà Charles. Voilà M. Schmitt."
item_add 21,"Voici Vienne. Voilà Rome. Voilà Kiel. Mme Schmitt est ici. Hans est là. Charles est là-bas. Voici Mme Schmitt. Voilà Jean. Voilà Charles."

end

analyser:
'  txt$ = text$(21)
  txt$ = ""
  for i%=1 to count(21)
    txt$ = txt$ + item_read$(21,i%) + " "
  next i%
 
  clear 21
  clear 22
  clear 23
  if checked(10)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),0,0)
    clipboard_paste 21
  end_if
  if checked(11)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),1,handle(21))
  end_if                                                                                                                   
  if checked(12)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),2,handle(22))
    file_save 22,"mots.txt"
  end_if
  if checked(13)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),3,handle(23))
  end_if

  message str$(res%)+" mots trouvés"
 
  return

Ne pas oubier de faire
Code:
clear 21
avant d'appeler la fonction, car sinon, les mots trouvés seront ajoutés au mémo si le choix était presse-papier ou mémo !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1104
Date d'inscription : 19/01/2014

MessageSujet: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 10:32

Bonjour.

Merci Klaus, je pensais bien que le problème venait de là.
Par contre, le problème avec la combo n'est pas résolu.

Merci de la suite.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 15:20

Je n'ai aucun problème de contenu de combo, pas de lignes blanches, et autant de lignes que la fonction déclare avoir retournées.
Regarde ce test (sélectionne "combo"):
Code:
' test_IsolateWordsFromString.bas

label analyser

dim res%, txt$, i%

dll_on "KGF.dll"


maximize 0
alpha 1 : top 1,10 : left 1,10 : caption 1,"Chaîne de caractères à analyser:"
edit 2 : top 2,30 : left 2,10 : width 2,400

alpha 3 : top 3,60 : left 3,10 : caption 3,"Résultat dans:"
option 10 : top 10,80 : left 10, 10 : caption 10,"Clipboard"
option 11 : top 11,80 : left 11,110 : caption 11,"Memo"
option 12 : top 12,80 : left 12,210 : caption 12,"Combo"
option 13 : top 13,80 : left 13,310 : caption 13,"List"

button 20 : top 20,110 : left 20,10 : caption 20,"Analyser" : on_click 20,analyser

memo  21  : left 21,10  : top 21,140 : width 21,300 : height 21,400 : bar_both 21
combo 22  : left 22,310 : top 22,140 : width 22,300 : height 22,400
list  23  : left 23,620 : top 23,140 : width 23,400 : height 23,600
font_size 23,12
font_bold 23


item_add 21,"Là ! Voilà Jean. Jean est là. Voilà Charles. Charles est là. Mme Schimtt est là. Voilà M. Schmitt. Voici Jean. Voilà Charles."
item_add 21,"Voici Kiel. Voilà Vienne. Kiel est ici. Vienne est là. Voici Mme Schmitt. Voilà M. Schmitt. Mme Schmitt est ici. M. Schmitt est là."
item_add 21,"Là-bas! Voilà Bonn. Voilà Rome. Jean est là. Charles est là-bas. Jean est là-bas. Voilà Charles. Voilà M. Schmitt."
item_add 21,"Voici Vienne. Voilà Rome. Voilà Kiel. Mme Schmitt est ici. Hans est là. Charles est là-bas. Voici Mme Schmitt. Voilà Jean. Voilà Charles."

end

analyser:
'  txt$ = text$(21)
  txt$ = ""
  for i%=1 to count(21)
    txt$ = txt$ + item_read$(21,i%) + " "
  next i%
 
  clear 21
  clear 22
  clear 23
  if checked(10)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),0,0)
    clipboard_paste 21
  end_if
  if checked(11)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),1,handle(21))
  end_if                                                                                                                   
  if checked(12)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),2,handle(22))
    file_save 22,"mots.txt"
  end_if
  if checked(13)=1
    res% = dll_call3("IsolateWordsFromString",adr(txt$),3,handle(23))
  end_if

  message str$(res%)+" mots trouvés"
 
  if checked(12)=1
    if count(22)<>res% then message "Ecart de nombre de lignes"
    for i%=1 to count(22)
      txt$ = item_read$(22,i%)
      if len(txt$)=0 then message "Ligne vide no. "+str$(i%)
    next i%
  end_if
 
  return
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1104
Date d'inscription : 19/01/2014

MessageSujet: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 15:27

Bonjour.

OK Klaus, pas de problème détecté dans la combo.

Mais il demeure un problème, lors de l'enregistrement, dans le fichier texte 'mots.txt', doit voici un extrait.
Les lignes vides contiennent chacune un retour-chariot chr$(13).

Code:


Voilà

Jean

Jean

est



Voilà

Charles
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 15:43

Ok, je vois. Je vais chercher d'où ça vient...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Pedro Alvarez

avatar

Nombre de messages : 1104
Date d'inscription : 19/01/2014

MessageSujet: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 16:25

Bonjour.

J'ai trouvé un indice qui te permettra certainement de résoudre le problème.
En ajoutant les lignes suivantes avant le return, tu verras que l'apostrophe finale est affichée sur une ligne différente, ce qui signifie que le dernier caractère de la ligne est un chr$(13).

Code:
txt$="'"+item_read$(22,1)+"'"

message txt$
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 19:04

Oui, j'ai trouvé. Fichu copier/coller - ce n'est pas la première fois que je me fais avoir avec ça.

Enfin, c'est corrigé, aussi bien pour le combo que pour la liste. Le presse-papier et le mémo n'étaient pas concernés.

Recharge simplement la DLL, et ça devrait marcher. Désolé pour la complication.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   Dim 9 Avr 2017 - 19:35

D'ailleurs, qu'est-ce que tu penses de la possibilité de gérer la persistance ou non de certains caractères (trait d'union et apostrophe, par défaut), de changer cette liste, et de changer la liste des lettres spéciales pour avoir les accentués d'une autre langue ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

Nombre de messages : 8077
Age : 47
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Dim 9 Avr 2017 - 19:43

Erreur de sujet
Désolé... Embarassed
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Besoin d'une commande de lecture de mots individuels.   

Revenir en haut Aller en bas
 
Besoin d'une commande de lecture de mots individuels.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Lecture video interrompue avec mise en tampon
» Liste des mots-clé de Panoramic avec leur classification
» commande menu "Enregistrer"
» Commande et retrosignalisation d'aiguilles + RRTC
» mots fléchés

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: