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

Signaler
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
18 avril 2015
-
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
-
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

8 réponses

Messages postés
273
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
18 avril 2015
10
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
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
17
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).
Messages postés
2527
Date d'inscription
jeudi 15 janvier 2004
Statut
Membre
Dernière intervention
16 octobre 2019
17
...
Essaie et étudie la propriété LoadFromStream de ton Memo ou de ton RichEdit !
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
as tu essayé de mettre un MonMemo.BeginUpdate avant ton ajout et un EndUpdate apres ?
Messages postés
991
Date d'inscription
samedi 25 octobre 2003
Statut
Membre
Dernière intervention
29 août 2013
7
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

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
Messages postés
273
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
18 avril 2015
10
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
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
14
OK sujet clos à la demande de solilog