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
» KGF_dll - nouvelles versions
par Klaus Aujourd'hui à 0:29

» track_bar circulaire
par Klaus Hier à 21:41

» Gestionnaire de Projets Panoramic
par Jean Claude Hier à 20:41

» Mah-Jong européen new-look
par Jean Claude Hier à 20:34

» Gestion de l'Unicode
par jean_debord Hier à 11:21

» Button_picture
par pascal10000 Jeu 14 Déc 2017 - 11:41

» Pourquoi le compilateur stagne
par Minibug Jeu 14 Déc 2017 - 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Jeu 14 Déc 2017 - 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Jeu 14 Déc 2017 - 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Jeu 14 Déc 2017 - 10:00

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Demande d'une nouvelle fonction dans kgf.

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 15:12

Bonjour.

@Klaus.

J'aurais besoin d'une fonction qui rechercherait les items semblables dans un très grand fichier texte.
Je m'exlique:

Je possède un dictionnaire français-anglais, qui contient plus de 700.000 définitions, comme suit (exemple):

ta (adj poss) [qui est à toi] = your
ta (locution) = merci
ta (poss) [archaic or poetic] (adj) = sens annulé
ta (poss adj) [archaic or poetic] = sens annulé


La fonction devrait identifié tous les items du fichier, commençant par une chaîne de caractères donnée.

Exemple

La chaîne est égale à 'ta'.

La fonction identifie la 1ère occurrence correspondante, ici:
ta (adj poss) [qui est à toi] = your

Elle lit ensuite chaque item qui suit, et s'arrête au 1er item ne commençant pas par 'ta'.
Attention, à la lecture de chaque item, elle doit supprimer les sous-chaînes entre parenthèses et crochets, afin de bien réaliser la comparaison.

Dans l'exemple ci-dessus, elle devrait trouver 4 items.

La liste des items trouvé devra être enregistré dans un objet combo, ou autre.

Cette fonction est donc différente de la fonction SearchStringInTextFile.

Merci de ta réponse pour la faisablité.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 16:57

Oui, c'est possible. Je vais clôner SearchStringInTextFile et en dériver la nouvelle fonction.

Et pourquoi n'utiliserais-tu pas la fonction:
Code:

res% = dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),LineNumbers%, AtStartOnly%, OutType%, handle(obj%))
en mettant 1 dans le paramètre AtStartOnly% (le 4ème paramètre). Cela devrait résoudre ton problème, non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 17:35

Bonjour.

Merci d'avoir regardé Klaus.

En fait, la solution que tu préconises ne résouds pas le problème.
Cela est dû au fait que les items peuvent contenir des sous-chaînes entre parenthèses et crochets.

Dans l'exemple ci-dessus, la fonction devrait rechercher tous les items débutant par 'ta = ', après suppression de ces sous-chaînes justement.

Ce que ne réalise pas la fonction SearchStringInTextFile.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 17:52

Et pourquoi ne cherches-tu pas simplement "ta ", avec juste un espace après "ta". Ca donne le même résultat, non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 18:48

Bonjour.

@Klaus.

Ce serait trop simple.
Mais le dictionnaire comporte des milliers d'expressions commençant par 'ta' !!

Comme suit:

ta caméra n'est pas aussi bonne que la mienne (locution) (*) = your camera is not as excellent as my camera
ta carrière sera pénible. (locution) = your career will be difficult.
ta chambre doit toujours être en ordre (locution) (*) = your room must always be kept clean
ta chambre, c'est un vrai chantier [désordre] = your bedroom is a total shambles ou looks like a bomb's hit it


Et ce que je recherche à faire, c'est d'établir la liste des items correspond uniquement au pronom possessif 'ta'.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 19:09

Et donc, le critère pourraît être "ta (", non ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 20:30

Bonjour.

Malheureusement, il n'est pas possible de connaître à l'avance le critère exact à rechercher.
Donc, retour au point de départ.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 20:47

Donc, résumons:
Pour chaque ligne:
- j'élimine tout ce qui est entre (...), y compris ces parenthèses,
- j'élimine tout ce qui est entre [...], y compris ces parenthèses,
- je recompacte la ligne en éliminant les doubles espaces
- puis je vérifie si la ligne commence par le critère fourni suivi d'un "="

Est-ce exact ? Franchement, je ne vois pas la différence avec la recherche de "ta (". Peux-tu le donner un exemple plus parlant pour cela, stp ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 22:08

Bonsoir.

Oui, c'est exactement cela, tu as bien résumé ma requête.

Mon but est le suivant: traduire un texte de longueur quelconque en anglais, allemand ou espagnol.

Chacun des mots du texte est recherché individuellement dans les dictionnaires.

Mais on ne sait jamais si, dans un dictionnaire, le mot cherché est suivi d'un crochet, d'une parenthèse, ou d'un autre caractère .
Et voilà le problème !

La fonction SearchStringInTextFile fonctionne parfaitement, mais fournit des milliers de correspondances pour certains mots, alors que le dictionnaire n'indique que quelques traductions !!

Comme je te l'ai signalé plus haut, pour le mot 'ta'.

Il en est de même pour le mot 'je'.

je (devant voyelle et 'h' muet j' ) (pron) = I
je (me) fais des inhalations avec ce produit (locution) = I use this product as an inhalant
je (me) fais des inhalations avec ce produit [traitement] = I use this product as an inhalant
je (ne) rigole pas! [sens: plaisanter] (locution) = to it's no joke!


Pour ce mot simple, une seule traduction doit être prise en compte, alors que la fonction SearchStringInTextFile indique des milliers de lignes !!

On ne peut pas rechercher 'je(' car on ne sais pas quel caractère se trouve après 'je' dans le dico.

Merci de la suite.

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

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Jeu 23 Nov 2017 - 23:20

Donc, en réalité, je dois chercher si, toutes parenthèses éliminées, le critère de rercherche est suivi uniquement du signe "=" (égal), puis du texte quelconque derrière.

Bon, je vais voir cela.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Ven 24 Nov 2017 - 0:26

J'ai créé une fonction qui pourait résoudre cela. C'est une fonction dérivée de SearchStringInTextFile et elle s'appelle SpecialSearchStringInTextFile. Voici comment elle est appelée:
Code:
res% = dll_call5("SpecialSearchStringInTextFile",adr(fic$),adr(crit$),LineNumbers%,OutType%, handle(obj%))
Comme tu vois, elle garde les mêmes paramètres que la fonction d'origine, avec le paramètre AtStartOnly en moins. A part cela, elle s'utilise exactement de la même manière. Tu lui indiques le critère SANS l'espace à la fin, et SANS le signe "=" (égal). De façon interne, la fonction élimine tout ce qui est entre (...) et [...], ces parenthèses y compris, supprime les espaces doubles, puis cherche le critère indiqué suivi d'un espace puis du signe "=". Si cette combinaison est trouvée en position 1 (début de ligne), alors le résultat est signalé exactement comme dans la fonction d'origine, sinon la ligne est ignorée.

Tu peux télécharger KGF.dll sur mon site ou mon WebDav. La doc n'est pas encore à jour, et le numéro de version est pour le moment inchangée. J'aimerais que tu puisses faire un essai réel.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Ven 24 Nov 2017 - 9:40

Bonjour.

@Klaus.

Je viens de tester la nouvelle fonction, avec la dernière version de kgf.dll, trouvée dans ta signature.
J'obtiens un message d'erreur:

Not correct arithmetic expression: error in function line11.

Aurais-je omis quelque chose dans le code ?

Code:
dim res%, fic$, crit$, l%, o%, obj%

dll_on "kgf"

fic$="dico_français_anglais.txt"
crit$="ta"
l%=1

combo 1

res%=dll_call5("SpecialSearchStringInTextFile",adr(fic$),adr(crit$),l%,2,handle(1))

Tu peux télécharger le dictionnaire complet français-anglais ici:

https://mon-partage.fr/f/rT6Hz79H/
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Ven 24 Nov 2017 - 12:53

J'ai trouvé et corrigé. Tu peux recharger la DLL, et tu peux essayer avec cette version modifiée du code de démo:
Code:
dim res%, fic$, crit$, l%, o%, obj%

dll_on "kgf"

fic$="dico_français_anglais.txt"
crit$="ta"
l%=1

combo 1
combo 2 : left 2,200

res%=dll_call5("SpecialSearchStringInTextFile",adr(fic$),adr(crit$),l%,2,handle(1))
res%=dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),l%,1,2,handle(2))

end
La combo de gauche montre le résultat de la nouvelle fonction, et la combo de droite celui de l'ancienne fonction.

EDIT à 11:36:
J'ai fait de sorte que la fonction retourne la ligne d'origine, non la version "épurée" construite pour la comparaison. C'est certainement mieux ainsi...

EDIT à 12:20:
La doc a été complétée pour la fonction SearchStringInTextFile.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Pedro Alvarez

avatar

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

MessageSujet: Demande d'une nouvelle fonction dans kgf.   Ven 24 Nov 2017 - 17:03

Bonjour.

@Klaus.

Cette nouvelle commande est tout simplement géniale.
Un grand merci Klaus pour cette nouveauté très appréciée.

J'ai réalisé un test avec le mot 'je'.

Résultats:
. avec la nouvelle commande: 0 sec.
. avec l'ancienne commande: 8 sec.

Le gain de temps est vraiment très appréciable, ce qui va me permettre de donner un véritable coup de fouet à mon module de traduction.

Code:
dim res%, d1$, d2$, fic$, crit$, l%, o%, obj%

dll_on "kgf"

fic$="dico_français_anglais.txt"
crit$="je"
l%=1

combo 1:width 1,500:font_size 1,12:font_bold 1
combo 2:left 2,600:width 2,500:font_size 2,12:font_bold 2

d1$=time$
res%=dll_call5("SpecialSearchStringInTextFile",adr(fic$),adr(crit$),l%,2,handle(1))
message d1$+":"+time$
d2$=time$
res%=dll_call6("SearchStringInTextFile",adr(fic$),adr(crit$),l%,1,2,handle(2))
message d2$+":"+time$
end
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   Ven 24 Nov 2017 - 19:41

Very Happy Very Happy Very Happy
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html En ligne
Contenu sponsorisé




MessageSujet: Re: Demande d'une nouvelle fonction dans kgf.   

Revenir en haut Aller en bas
 
Demande d'une nouvelle fonction dans kgf.
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» [Résolu] Outlook Express & Orange
» nouvelle dans the Blue Planet
» Nouvelle voiture pour Kit dans la suite de K2000
» Comment insérer une image dans les messages du forum ?
» [Annulée] Demande de description des catégories.

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: