FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Commande SearchStringList. Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Commande SearchStringList. Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Commande SearchStringList. Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Commande SearchStringList. Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Commande SearchStringList. Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Commande SearchStringList. Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Commande SearchStringList. Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Commande SearchStringList. Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Commande SearchStringList. Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Commande SearchStringList. Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Commande SearchStringList. Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Commande SearchStringList. Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Commande SearchStringList. Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Commande SearchStringList. Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Commande SearchStringList. Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment :
LEGO Icons 10331 – Le martin-pêcheur
Voir le deal
35 €

 

 Commande SearchStringList.

Aller en bas 
2 participants
AuteurMessage
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 15:50

Bonjour.

@Klaus.

Je me bats depuis plusieurs jours avec cette fonction, afin d'améliorer la vitesse d'exécution d'une routine de recherche.

Mais le problème malheureusement vient des nombreux appels à KGF, qui doit contenir maintenant plus de 700 fonctions !
Et je n'entrevois pas de solution au problème.

Pourrais-tu regarder de près cette fonction, afin de l'optimiser peut-être.
Merci d'avance.
Revenir en haut Aller en bas
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:06

Bon, je vais me plonger dedans...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:16

Question: est-ce que ta StringList est triée ou non ? Si elle est triée, selon quel mode ? Ce sont deux traitements complètement distincts, et ce serait important de savoir dans quelle branche il faut chercher.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:26

Voici les méthodes que j'utilise:

Création de la StringList.

Code:
sub CreateLoadStringList(n%,mode%,file$)
    ' On peut numéroter des StringList de 1 à 20 uniquement.
    ' Toujours utiliser cette routine.
    ' mode% indique si la liste doit être triée.
    ' 2 = la liste est triée en mode ASCII.
    ' 1 = la liste est triée en mode Windows.
    ' 0 = la liste n'est pas triée.
    if n%>20
       dlist n%:file_load n%,file$
          else
       res%=dll_call2("CreateStringList",n%,mode%)
       dll_file$=file$
       if res%=0 then res%=dll_call2("LoadStringList",n%,adr(dll_file$))
    end_if
end_sub

Exemple d'appel.

Code:
f$="fichiers\formes_verbales_"+langue_source$+"_"+langue_cible$+"_avec_complement.txt"
CreateLoadStringList(2,0,f$)

J'espère que cela pourra t'aider.
Revenir en haut Aller en bas
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 18:38

Oui. Je constate que ta liste n'est pas triée (le deuxième paramètre de ta procédure CreateLoadStringList est passé comme 0.

Or, dans ce cas, il faut parcourir la liste entière depuis le début jusqu'à ce que la cible soit trouvée, ou jusqu'à la fin si la cible n'est pas trouvé. Egt connaissant la longueur de tes listes, je suis certain que ça prend un certain temps.

Es-tu sûr de ne pas pouvoir fournir une liste triée en mode 2 (Ascii) ? C'est la recherche la plus rapide (par dichotomie).
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 20:29

Bonsoir.

Voilà, tout est dit dans le code suivant:

Code:
dll_on "kgf"

dim debut, e$, f$, fin, k%, n%, mode%, res%, te$

te$=string$(100," ")

f$="fichiers\formes_verbales_espagnol_français_avec_complement.txt"
CreateLoadStringList(2,1,f$)

debut=number_ticks
e$="sigue siendo#"
for k%=1 to 100
    ' sigue siendo#551491;1;3
    ' 678220
    res%=dll_call3("SearchStringList",2,adr(e$),adr(te$))
next k%
caption 0,trim$(te$)                               
fin=number_ticks
' 6.6 sec si mode%=0
' 0.0 sec si mode%=1
message "ok: "+str$(fin-debut)

end

sub CreateLoadStringList(n%,mode%,file$)
    ' On peut numéroter des StringList de 1 à 20 uniquement.
    ' Toujours utiliser cette routine.
    ' mode% indique si la liste doit être triée.
    ' 2 = la liste est triée en mode ASCII.
    ' 1 = la liste est triée en mode Windows.
    ' 0 = la liste n'est pas triée.

    res%=dll_call2("CreateStringList",n%,mode%)
    if res%=0 then res%=dll_call2("LoadStringList",n%,adr(file$))
end_sub
Revenir en haut Aller en bas
Klaus

Klaus


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

Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 20:37

Eh oui... toute la différence est là. La recherche par dichotomie dans une liste triée est redoutablement efficace.

Alors, sujet résolu ?
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Pedro

Pedro


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

Commande SearchStringList. Empty
MessageSujet: Commande SearchStringList.   Commande SearchStringList. EmptyLun 29 Juin 2020 - 20:38

Oui, le problème semble résolu.

Mais parfois, j'obtiens un res% négatif ?

Ah, je viens de consulter la doc à ce sujet, qui dit ceci:

Si la liste est triée et si une clé partielle est spécifiée, alors la fonction retourne une valeur négative qui représente l'indice devant lequel il faudrait insérer le critère pour respecter l'ordre de tri.
Revenir en haut Aller en bas
Contenu sponsorisé





Commande SearchStringList. Empty
MessageSujet: Re: Commande SearchStringList.   Commande SearchStringList. Empty

Revenir en haut Aller en bas
 
Commande SearchStringList.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» La commande EXECUTE
» KGF_dll - nouvelles versions
» Nouvelle commande.
» Commande OPEN_DIALOG n
» commande execute

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: