Plantage "windows" de mon programme en delphi [Résolu]

Signaler
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009
-
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009
-
Bonjour

J'ai réalise un programme en delphi qui traite une table de base de données. Quand ma table ne contient pas beaucoup d'enregistrements, tout se passe très bien.
Par contre dès que ma table contient beaucoup d'enregistrements et que je fais autre chose en même temps que mon programme travaille, j'ai le droit à un beau "le programme ne répond pas" (alors que si je ne fais rien en même temps ca passe très bien).

Je suppose que mon programme utilise pas mal de ressources mais comment régler ce genre de problème ? :$

Merci

11 réponses

Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Et est ce que tu as deja attendu la fin du traitement lorsque windows te dit "le programme ne repond pas" cela ne signifie pas que le programme est planté (ca peut etre le cas) mais ca peut signifié que le programme est entrain de travaillé ce qui est ton cas.

Lance donc ton programme et fais autre chose a cote ensuite quand tu verras "le programme ne repond pas" attend une heure (ca fait long) et tu verras bien que ton programme aura finis.

Pour eviter un figeage de programme tu peux :
Dans tes boucles insérées un application.processMessages
Ou sinon mettre un memo et une progressbar pour indiquer l'état d'avancement et faire un refresh de ta form regulierement
ou sinon les deux aussi.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Regarde l'aide pour avoir plus de détails. Mais je pense que Update risque de surcharger ta mémoire.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Alors commencons par le debut :
Quel type de base de données?
Combien de temps dure le traitement si tu ne touches a rien?

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009

En fait j'ai en entrée une base access que je transfert sur sql serveur pour faire tous mes traitements de correction automatique des champs et je retransfert vers access à la fin.

Sur un gros fichier le traitement total peut facilement prendre 1h.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Juste pour info il fait quelle taille ton fichier?

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009

en fait j'ai le caption de ma form qui change à chaque étape ainsi que le texte d'un tedit, pour dire où on est le programme. Le problème c'est que la plupart du temps la fenetre devient toute blanche (même si ca continu à tourner correctement) ou alors il affiche le changement que très longtemps après :-/
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009

celui sur le quel je fais mes tests actuellement fait 44000 lignes environ mais je peux en avoir de 175000 et même plus.
Messages postés
1119
Date d'inscription
lundi 4 février 2002
Statut
Membre
Dernière intervention
4 octobre 2006
7
Alors fais un refresh en meme temps que tu mets à jour ton caption et la fenetre restera peut etre blanche mais au moins tu veras le caption qui t'affichera les infos.

Bonne prog,
JMP77.

N'oubliez pas de cliquer sur réponse acceptée.
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009

ok je vais tester

sinon tu avais raison, si je laisse mon truc tourner en même temps que je fais autre chose et que je ne clique pas sur la fenetre du programme ca ne me fait plus "le programme ne répond pas"
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009

juste une question aussi, qu'elle est la différence entre

form1.update

et

form1.refresh

?
Messages postés
71
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
5 février 2009

ben j'ai justement regardé dans l'aide mais je ne trouve pas l'explication très claire.
Si update surcharge la mémoire je vais donc remplacer par refresh.