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
» number_mouse_up
Problème de tableau. Emptypar jjn4 Aujourd'hui à 11:59

» Aide de PANORAMIC
Problème de tableau. Emptypar jjn4 Aujourd'hui à 11:16

» trop de fichiers en cours
Problème de tableau. Emptypar lepetitmarocain Aujourd'hui à 10:43

» Je teste PANORAMIC V 1 beta 1
Problème de tableau. Emptypar papydall Aujourd'hui à 4:17

» select intégrés
Problème de tableau. Emptypar jjn4 Hier à 18:33

» PANORAMIC V 1
Problème de tableau. Emptypar Klaus Hier à 9:53

» bouton dans autre form que 0
Problème de tableau. Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Problème de tableau. Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Problème de tableau. Emptypar Klaus Lun 6 Mai 2024 - 10:23

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème de tableau. Emptypar Froggy One Jeu 2 Mai 2024 - 11:16

» @Jack
Problème de tableau. Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Problème de tableau. Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Problème de tableau. Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Problème de tableau. Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Les maths du crocodile
Problème de tableau. Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

 

 Problème de tableau.

Aller en bas 
2 participants
AuteurMessage
pan59

pan59


Nombre de messages : 367
Age : 66
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 : 12293
Age : 74
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: