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.
Problème de tableau. Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Problème de tableau. Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Problème de tableau. Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Problème de tableau. Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Problème de tableau. Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Problème de tableau. Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Problème de tableau. Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Problème de tableau. Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Problème de tableau. Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Problème de tableau. Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Problème de tableau. Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Problème de tableau. Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Problème de tableau. Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Problème de tableau. Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Problème de tableau. 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 : -29%
DYSON V8 Origin – Aspirateur balai sans fil
Voir le deal
269.99 €

 

 Problème de tableau.

Aller en bas 
2 participants
AuteurMessage
pan59

pan59


Nombre de messages : 367
Age : 67
Localisation : Wattignies
Date d'inscription : 16/10/2011

Problème de tableau. Empty
MessageSujet: Problème de tableau.   Problème de tableau. EmptyMer 26 Déc 2012 - 9:19

Bonjour.

A l'attention de Klaus.

J'ai une petite question: serait-il possible de créer une fonction qui rechercherait un élément dans un tableau très rapidement, de la même façon que la fonction SearchListBox ?

Cela m'aiderait beaucoup.

Merci de ton aide.
Revenir en haut Aller en bas
Klaus

Klaus


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

Problème de tableau. Empty
MessageSujet: Re: Problème de tableau.   Problème de tableau. EmptyMer 26 Déc 2012 - 10:30

En Panoramic, la seule solution consiste à créer un tableau trié et de chercher dans ce tableau par dichotomie.

Mais attention: le chargement d'un tableau de chaînes de caractères est horriblement long, bien plus lon que le chargement d'un objet LIST.

Tu connais aussi les objets LIST. Cela te semble trop long, ce que je veux bien croire. Est-ce que tu as mis l'attribut SORTED_ON sur la LIST en question ? Sûrement.

Une dernière possibilité: utiliser la nouvelle dll BDR.dll. Elle fait bien plus que ce que tu cherches, mais elle fait au moins cela: recherche rapide dans une liste triée en memoire, par dichotomie. Mais je ne sais pas du tout si les besoins en memoire pour 175000 éléments ne sont pas prohibitifs. A Essayer.

Pour créer, il faut utiliser:
BDRopen pour créer une base vide, sur disque et en memoire
une boucle de BDRadd pour créer les éléments (les données peuvent être vides)
BDRsave pour sauvegarder la base sur disque
BDRclose pour fermer la base

Pour utiliser: il faut utiliser:
BRDopen pour ouvrir la base existante
pour chaque recherche, BDRfindname pour trouver un nom

Il y a plein d'autres possibilités (recherche séquentielle en avant ou en arrière, filtrer les noms en fonctions de critères, ...). Tout est documenté dans BDR.chm.

Inconvénient de cette solution: c'est une DLL à part, pour le moment non intégrée à KGF.dll. Et pour utiliser KGF.dll, il faut fermer la base, puis décharger BDR.dll avant de charger KGF.dll. Sauf à utiliser les fonctions de l'ensemble "DynamicallyLoadDLL" qui sont:
LoadDLL, UnLoadDLL, TargetDLL,
CallDLL0, CallDLL1, CallDLL2, CallDLL3, CallDLL4, CallDLL5, CallDLL6
Avec cela, tu peux utiliser KGF.dll comme seule DLL connue de Panoramic, puis utiliser ces foncions pour ouvrir et utiliser une ou plusieurs DLLs supplémentaires, dont BDR.dll. C'est un peu plus complexe à utiliser...

Mais mon conseil, ce serait plutôt d'utiliser un système de dictionnaire personnalisé, adapté à tes besoins. Coupe ton gros fichier en x modules de taille comparable, et crée un fichier texte dont chaque ligne contient le dermier et dernier nom dans un des fichiers modulaires. C'est ce dernier que tu charges en mémoire dans un objet DLIST (non visible) avec attribut SORT_ON. Et tu cherchers, par dichotomie, le module censé contenir le mot que tu recherches, puis tu ouvres ce fichier module, tu le charges dans une autre DLIST avec SORT_ON, et tu cherches ton mot par dichotomie dans cette seconde DLIST.

Si tu découpes ta grosse liste en, disons 100 modules, tu obtiens une liste indexe de 100 lignes qui reste en permanence en mémoire, et 100 listes de 1750 lignes dont tu ne charges d'une seule pour chaque recherche. Et bien sûr, pour la recherche suivante, tu ne charges un autre module que si le mot recherché est censé être dans un autre module.

Ainsi, le chargement ponctuel est nettement amélioré. Cependant, en fonctionnement continu, tu as des chargements en permanence, et cela risque de dégrader les performances. C'est l'éternel conflit entre mémoire et performance.

Maintenant, tu as une autre possibilité. Crée un programme "serveur" en Panoramic, qui charge la liste totale une seule fois et la garde en mémoire. Ce programme ne fait rien à l'écran et reste actif en arrière-plan. Ton programme application communique avec de serveur par les routines IPC (Inter-Process-Communication) de KGF.dll, pour lui soumettre un mot à chercher. Le serveur le cherche et renvoie le résultat. Ce mécanisme est très simple à mettre en place, bien que cela ne corresponde pas forcément à la représentation mentale intuitive d'un programme fonctionnant de façon linéaire. Là, tu as un serveur qui fait une partie du boulot indépendamment. Mais cette communication entre programmes est très rapide.

Voilà. J'ai été un peu bavard, mais je voulais te donner une vue un peu plus exhaustive des possibilités et contraintes. J'espère que tu auras le courage de lire ce message jusqu'au bout...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
 
Problème de tableau.
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Lire un Tableau
» Problème de tableau local.
» probleme de variable type tableau dans une boucle
» Problème avec select case Probleme réglé merci
» Tableau mulitidimensionnel

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: