Bonjour, je galère à nouveau sur le Tstringgrid et cette fois je cherche carrement un exemple de code.

Voilà, au jour d'aujourd'hui je "parse" un fichier ligne a ligne avec des delete et des pos etc... Et j'affiche le resultat dans un StringGrid.

Voici le pseudo code

index:=0

Repeat
(...)
ReadLN
Parse
remplit les colonnes de la ligne (index) du stringgrid en fonction de ce qui est parsé
inc(index)
Until EoF

bref ca marche sauf que...
Je traite des fichiers de plusieurs dizaines de megas et que la memoire est vite pleine.
Il m'est impossible de charger l'intégralité du fichier dans le stringgrid car je finit par depasser la capcité maximale de la memoire.


Je cherche donc a produire ceci:

soit nb le nombre de lignes visibles à l'ecran sur l'ecran.
On charge une partie du fichier dans le stringrid...
Quand on deplace l'ascensseur on charge la partie du fichier correspondante à la partie visible et on libere la memoire correspondant à la partie maintenant invisible.

Ou un truc du genre...

Est-ce clair?

Les lignes du fichier que je parse ne sont pas toutes de meme longueur, et je ne génère pas ce fichier (c'est un logiciel dont je n'ai pas la maitrise qui le fait)

(je dis ca pour les setlenght si vous voyez ce que je veux dire)

Mais par contre a chaque fois 1 ligne du fichier correspond à 1 ligne du stringgrid (on remplit ou non l'intégralité des x colonnes).

Bref, je veux faire une stringgrid qui lit en streaming en quelque sorte. Qui marcherait à la winhex (pour ceux qui connaissent) mais avec des strings.

Si vous avez un pt'it (gros?) morceau de code qui fait ca, ca me tirerait une epine du pied.

Je veux bien utiliser un component tierce partie s'il le fait mais a condition (ouai je sais j'en demande beaucoup) qu'il y' ait un exemple pour réaliser ce que je demande.

Il faut vous dire qu'un des fichier généré dépasse les 4 Go...Pour exemple une grille de 20 Mo chargée avec coloration de lignes et coloration syntaxtique prend plus de 100 Mo en memoire (listes chainées?) bref...

Vous voyez le probleme.

Merci d'avance.