Mémoir.... quand tu nous tiens

Résolu
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010 - 4 juil. 2007 à 20:40
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010 - 7 juil. 2007 à 00:28
Bonsoir, Quelqu'un pourrait-il m'expliquer quand je charge une forme comportant 300 images ma form met presque 15 secondes à se charger, je les ais directement chargé avec ma feuille... est-ce qu'il y à un moyen différent pour stocker les images? de tel manière à ce que celà prenne moin de temps?

d'autre part quand je fais des recherche même sur 10 enregistrement dans une base access comportant plus de 2 millions d'enregistrements, mon prog prend un certain temps, voir un temps certain pour faire ma recherche, ceci n'est pas le plus grave, mais quand je clique sur ma forme... le prog me dit :qu'il ne répond plus....donc je me dis que j'ai un problème de mémoir.... donc si quelqu'un peu m'aider ce serait sympat.... merci d'avance

:)Sator :)

10 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 juil. 2007 à 21:49
Bonsoir,

Laisse tes images dans un répertoire externe.
Tu ne visualises tout de même pas (même en miniatures d'abord en vue de leur agrandissement) 300 images...
charges un dizaine d'images à voir de suite et la dizaine suivante (en attente mais non encore visibles)
quand tu avances dans la vision : rend visibles les dix qui ne l'étaient pas et :
mets dans ta mémoire (en, non visibles) les 10 premières
charge les 10 suivantes et rens-les visibles
charge les 10 suivantes en attente, mais non visibles
etc...
etc...
de sorte à pouvoir, à chaque instant, passer, tant en avant qu'en arrière, à un groupe de 10 images suivantes ou antérieures.
tout celà s'établit par un mécanisme d'horlogerie minutieux mais pas vraiment complexe.

Si c'est un visualisateur d'album, que tu fais (ou une chose similaire), il te faut le mériter et, dans ce genre d'affaire, il s'agit bien plus d'art stratégique que de connaissance du langage de développement.
La gymnastique dont je viens de te parler n'est tout de même pas si complexe ! Je l'ai, en mon temps, mise sur pieds en moins de 2 jours et totalement seul.
Il est vrai que je me suis un peu torturé les méninges (pas en code... mais en mécanisme) et que celà m'a coûté quelques mots de tête, mais voilà... l'affaire a été menée bon train.
Te donner le code de ce que j'ai fait n'est certes pas le but du jeu ! Celà serait totalement improductif ! Autant, si tu dois de contenter de ce peu là, accepter alors directement l'exécutable de ce visualisateur... je te l'offre, lui, si c'est ce que tu veux.... mais pas le code : il doit rester le fruit de ton acharnement car c'est ainsi que l'on devient un développeur, pas autrement.
Amitiés.
3
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
4 juil. 2007 à 20:49
le multithreading est la solution
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
4 juil. 2007 à 20:50
ah oui c'est vrai qu'en VB6 le multithreading est pas très bien implémenté ...
0
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
4 juil. 2007 à 20:53
Salut,

Si tu les charges dans des picturesbox, essaye de les charger avec les picturebox.visible=False(si cela marche...)

Pour ta recherches comment la fais-tu ? Avec des requêtes SQL ? Bon faut dire aussi que 2 millions de records cela commence à faire...non?

Sinon, regarde du côte de : DoEvents

Si tu avais un problème de mémoire, je pense que tu aurais un message d'erreur...

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
4 juil. 2007 à 20:56
Que ton programme ne réponde plus c'est logique puisqu'il est en train de charger la form. Ce méssage rajouté par Windows dans le nom de la feuille, ne signifie pas forcément un plantage, cela signifie simplement que le programme ne répond plus aux annonces de Windows concernant son execution (un peu comme les ping sur un réseau TCP).
Cela peut avoir plusieurs causes comme effectivement le plantage (c'était le but premier) mais l'occupation du programme à autre chose qui ne lui laisse pas le temps de traiter ces annonces.

Que ton programme n'est pas le temps de répondre se comprend, charger 300 images n'est pas une mince affaire, bien que cela dépend de la taille des images. L'idéal serait de ne charger que les images immédiatement indispensables au fonctionnement de la form et de charger les autres uniquement lorsque leurs besoins se fait sentir.

Quant à la base de donnée, malheureusement Access n'est pas des plus performants pour les grosses bases. Il est quand, probablement possible d'accèlérer les recherches, je pense, en utilisant les fonctionnalités d'index. Il me semble que les index existe nt aussi sous Access.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
4 juil. 2007 à 21:06
Tout d'abord merci à tous , de vous êtes donné la peine de répondre: en fait j'en charge 100 en visisible et 200 en non visible, et la première recherce dans access se fais sur un index numéroAuto... donc indéxé, bref il ni à pas vraiment de solutions..... merci quand même....

:)Sator :)
0
allthew3 Messages postés 551 Date d'inscription samedi 8 janvier 2005 Statut Membre Dernière intervention 12 avril 2008 2
4 juil. 2007 à 21:08
sinon pour les non-visibles tu peux mettre 1 timer pour différer ou faire des DoEvents entre chaque image (mets des DoEvents aussi pour les images visibles)
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
4 juil. 2007 à 21:22
ok je vais essayé ça merci...

:)Sator :)
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
4 juil. 2007 à 22:15
Prière de bien lire :
quelques maux et pas quelques mots de tête .... encore que, ma foi... il y avait aussi pas mal de mots (pas tous polis) qui sont ici et là venus à mon esprit, à cette époque ...
0
cs_Sator Messages postés 351 Date d'inscription samedi 7 février 2004 Statut Membre Dernière intervention 6 octobre 2010
7 juil. 2007 à 00:28
en fait je dois afficher 50 images en même temps, et 100 qui peuvent être cachée.... le tout * 2.... je pense effectivement que je vais charger les 100 * 2 à partir d'un fichier... ce sera toujours ça de gagné... Merci à tous pour votre colaboration

:)Sator :)
0
Rejoignez-nous