IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

De l'aide pour améliorer cette unité très courte


Sujet :

Composants VCL Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut De l'aide pour améliorer cette unité très courte
    Bonjour à tous,

    Je fais appel à vous pour m'aider à améliorer cette unité. Plus précisément, je voudrais changer la variable "sarray" qui est un tableau de string [1..12] et qui me gène car elle est de dimension fixe.

    J'ai acquis une licence LGPL3 (l'unité provient de chez http://www.markwatson.com/ ) donc comme le prévoit la LGPL3, les améliorations seront disponibles pour tous.

    Vous pouvez d/l le petit projet (très simple) à l'adresse suivante :
    Projet

    En quelques mots cette unité est en fait une conversion d'un prog Java en FreePascal que j'ai essayé de mettre à jour pour Delphi.

    Le but de cette unité est de faire du taggage de phrase. Je m'explique, prenons par exemple la phrase (anglais uniquement pour l'instant) :

    "The dog ran quickly"
    nous obtiendrons alors : "the/DT dog/NN ran/VBD quickly/RB"

    Ceci me permet ensuite de faire de l'analyse textuelle.


    Biensûr tout autre amélioration est la bienvenue ! et fera l'objet d'une mise à disposition sous Licence GPL3.

    Note : l'auteur ne disposant pas de Delphi, il est très dur pour lui de m'aider directement.

    Merci à tous pour vos aides,

    Amicalement,
    Bruno

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Déjà, dans FastTagUnit, ta nouvelle version de Split ne fonctionne pas aussi bien que la précédente, ça ne sépare que le premier séparateur, et pas le reste de la chaine ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Salut Shai,

    ben, heu, c'est bizarre chez moi le split fonctionne très bien ou alors je vois pas vraiment ce que tu veux dire par ne fait pas le reste de la chaîne ?

    Dans l'attente de te lire,

    Bruno

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Effectivement, ma chaine de test par défaut, contient un cas particulier, l'élément vide ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0;;1;2!2;333;44!44;55555;666!666;7777777;8888!8888;999999999;00000!00000;"AAA";"BBB";"CCC"
    j'obtenais donc, deux éléménts "0" et ";1;2!2;...."

    Sur la chaine (sans élément vide entre 0 et 1 ...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    0;1;2!2;333;44!44;55555;666!666;7777777;8888!8888;999999999;00000!00000;"AAA";"BBB";"CCC"
    j'obtiens les temps suivants :

    SplitBruno13 V1 : 24 ms (V1 ICI)
    SplitBruno13 V2 : 33 ms

    Dommage, elle est moins performante qu'avant ... et en plus buggé ...

    Sinon, explique les fonctions que tu souhaites modifier, on ne peut pas tout deviner ... pour un tableau dynamique, il suffit de parcourir de Low à High au lieu de 1 à 12 ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 624
    Par défaut
    Bonjour,

    en fait ce que je voudrais c'est carrément remplacer l'utilisation de la variable sarray qui a une dimension fixe par une variable dynamique.

    Le problème est que cette variable est utilisée un peu partout avec la variable psarray, et je ne sais pas pourquoi remplacer c'est 2 variables

    Concernant le split, pourquoi dis-tu quelle est buggée?
    est-ce à cause de ton cas spécial ?

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 096
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 096
    Par défaut
    Ben, oui, un split devrait renvoyer les items séparés, et dès qu'il y a un double séparateur, la fonction ne sépare plus rien ... c'est dommage ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    0;;1;2!2;333;44!44;55555;666!666;7777777;8888!8888;999999999;00000!00000;"AAA";"BBB";"CCC"
    //ce que l'on a avec ta V2
    0
    ;1;2!2;333;44!44;55555;666!666;7777777;8888!8888;999999999;00000!00000;"AAA";"BBB";"CCC"
    // ce que l'on avait avec la V1
    0
     
    1
    2!2
    333
    44!44
    55555
    666!666
    7777777
    ...

    sinon, pour ton remplacement, tu veux passer d'un tableau statique à un tableau dynamique, explique-nous ou tu coinces, ... on ne va pas partir comme ça sans se servir d'une base que tu pourrais nous avoir fait ...



    Quand on saura où aller, on pourra tenter un truc ...


    Sinon, dans ReadLexicon, j'aurais remplacé TokenByIndex par split, ça fait la même chose ...

    Ensuite, il suffit de remplacer ce tableau, par une TStringList, et tu auras globalement, le même fonctionnement (la TStringlist encapsule un tableau de chaine via un tampon mémoire géré comme on le faisait en Delphi 3 pour simuler les tableaux dynamiques)

    d'ailleurs GetTagList doit assez lente, l'utilisation d'une liste chaine avec THashEntryPtr, alors qu'un TList aurait été plus pratique, voire mieux, une TStringList trié sur le nom, effectivement, le remplissage aurait été plus long pour gérer le tri, mais si tu accède énormement par la suite, le temps investi dans le tri est vide rentabilisé

    regarce ce sujet, et celui-là
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

Discussions similaires

  1. [CV] Besoin d'aide pour améliorer mon cv
    Par Alain Defrance dans le forum CV
    Réponses: 14
    Dernier message: 29/04/2008, 00h04
  2. cherche aide pour améliorer le traitement d'une requête
    Par nomade333 dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 22/04/2008, 14h15
  3. [Galerie] Un peu d'aide pour améliorer un script
    Par ambigua dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 21/02/2008, 22h32
  4. [RegEx] Besoin d'aide pour améliorer le résultat
    Par teen6517 dans le forum Langage
    Réponses: 5
    Dernier message: 16/03/2007, 08h43
  5. Besoin d'aide pour amélioration de regxp
    Par shinux2004 dans le forum Langage
    Réponses: 10
    Dernier message: 03/09/2005, 16h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo