TMemo & tRichedit de m... (pardon) [Résolu/Fermé]

Messages postés
273
Date d'inscription
samedi 13 juin 2009
Dernière intervention
18 avril 2015
- 28 oct. 2009 à 22:10 - Dernière réponse :
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
- 29 oct. 2009 à 21:21
Bonsoir,
je sors du post anglais. Je tente de bosser avec des tMemo / tRichEdit, et c'est d'une lenteur ... au secours. Je dois me planter, c'est pas poss. Je rentre 30000 chaines (total 4,5 Mo) dans un tMemo, via soit:
- 30000 boucles sur memo.lines.add(chaine de 10 à 500 car). durée 10 minutes !!! too much.
- je boucle 30000 x en remplissant un string et je fais à la fin memo.lines.text := LaString. durée 10 minutes help, help ...
PC ancien 2GHz mais quand même!

Autre chose du même topo:
Je récupère l'évent OnSelectionChange du tMemo pour récupérer la pos du curseur et l'afficher dans un label. Il met 5 seconde pour posit le curseur, afficher le label et rendre la main !!! Y a quoi qui déconne ?
Bactérius m'a bien conseillé de mettre BeginUpdate / EndUpdate dans un try mais ça ne speed pas plus.
Merci à vous tous, aux stars et aux autres.
solilog
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Dernière intervention
18 avril 2015
29 oct. 2009 à 13:44
3
Merci
Merci à tous mais,
- plaintext EST déjà false
- j'utilise déjà beginupdate & endupdate

EUREKA, c'est tout simple.
32000 rEdit.lines.add = 10 minutes !! non
mais
- lire le fichier text 1/10 sec
- réécrire un fichier text +ou- 5 sec
- rEdit.lines.loadfromfile = 5 secondes
Donc, je vais
- lire le fichier,
- réécrire un autre fichier avec les bonnes lignes
- puis loadfromfile du fichier 2
- supprimer fichier 2
Ca devrait faire 10-12 sec maxi.
je ferme le post
Salut tous.
solilog

Merci solilog 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de solilog
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
28 oct. 2009 à 23:15
0
Merci
Salut,

C'est plus un problème de RAM que les 2GHz du Proc.
De plus, coller 4.5 Mo dans un Memo n'est pas très raisonnable, comme tu peux le constater.
Je te reconseille donc de mieux gérer ton loading avec TStream par exemple (si tu n'y es pas allergique).
Commenter la réponse de Caribensila
Messages postés
2684
Date d'inscription
jeudi 15 janvier 2004
Dernière intervention
26 juillet 2018
28 oct. 2009 à 23:23
0
Merci
...
Essaie et étudie la propriété LoadFromStream de ton Memo ou de ton RichEdit !
Commenter la réponse de Caribensila
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
28 oct. 2009 à 23:47
0
Merci
as tu essayé de mettre un MonMemo.BeginUpdate avant ton ajout et un EndUpdate apres ?
Commenter la réponse de Guillemouze
Messages postés
1015
Date d'inscription
samedi 25 octobre 2003
Dernière intervention
29 août 2013
29 oct. 2009 à 14:03
0
Merci
dans ce cas la, utilise la methode de Cari, qui sera plus simple et efficace :
- lire le fichier,
- écrire un stream fichier avec les bonnes lignes
- puis loadfromfileStream
- supprimer le fichie 2 detruire le stream
Commenter la réponse de Guillemouze
29 oct. 2009 à 16:28
0
Merci
Salut

Si ton but est de modifier un fichier texte avant de le lire dans un RichEdit, autant ouvrir initialement ton fichier dans un TStringList car le problème dans ton cas de figure c'est qu'a chaque ligne qui est lûe il y a un refresh qui se fait : D'ou le temps que ca prend
Commenter la réponse de Utilisateur anonyme
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Dernière intervention
18 avril 2015
29 oct. 2009 à 18:41
0
Merci
Merci, mais c 'est bon là, passez à autre chose.
Guillemouze: je sais mais j'utilsais file et non stream car ça devait être recompilé avec un Delphi3, et suis pas sûr tStream existe en D3.
Francky23012301: même en remplissant une seule big string (4.3 Mo) et affectant en une fois (line.text := MaString) c'est toujours 10 mn.

C'est bon, je vais utiliser loadfromstream.
Au fait, il est fermé ce post!
Bonsoir tous.
solilog
Commenter la réponse de solilog
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
29 oct. 2009 à 21:21
0
Merci
OK sujet clos à la demande de solilog
Commenter la réponse de JulioDelphi

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.