FileStream et libération de mémoire...

GenEars Messages postés 16 Date d'inscription mercredi 2 novembre 2005 Statut Membre Dernière intervention 25 janvier 2008 - 2 nov. 2006 à 17:21
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 - 3 nov. 2006 à 15:45
 Gen
Ears > Bonjour,

il y a quelques temps j'ai réutilisé une unité uFileByChunk qui m'a été bien utile pour une moulinette de fichier d'erreurs en .csv, erreur par erreur...

je réadapte cette même unité qui utilise un TFileStream à travers un tableau pour un nouveau projet analysant plusieurs .csv à la suite.

Ce tableau/FileStream est créé, puis détruit, pour chaque .csv; mais (!) au bout de 7 ouvertures/fermetures, EOutOfMemory apparaît !

... je réduit la taille du tableau : la limite de 7 opérations recule mais persiste...
... j'observe l'utilisation de la mémoire via le Gestionnaire de tâches : jamais en saturation...

Alors, une idée pour vraiment libérer un objet et ses mémoire ?

Dans l'attente,

3 réponses

cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
2 nov. 2006 à 18:38
salut,

sans un bout de code, c'est dur à dire où est ton problème.... Je suis plus doué en prog qu'en divination... :)

indique déjà quand et où est le raise. ça serrait un bon début.

sinon, lorsque tu observe la mémoire utiliser dans le gestionnaire, est-ce que la mémoire utilisée par ton applic augmente lorsque tu ouvre/ferme des fichiers? (le total du PC, à la limite en s'en fout)

et pour détruire des object, un .free marche bien en général. Faut juste faire gaffe au object qui peuvent être associé, mais pas détruit par le destroy. (l'exemple le plus typique étant les object associé au TStringList (combobox, ...))

dans l'attente....
0
N_M_B Messages postés 94 Date d'inscription mardi 9 mai 2006 Statut Membre Dernière intervention 1 mars 2008
3 nov. 2006 à 15:36
salut a tous !
Loda> "l'exemple le plus typique étant les object associé au TStringList (combobox, ...)"  pourais tu m'éxpliquer cala , sa m'interesse :)
GenEars>désolé mais mon niveau en prorammation ne me permet pas de t'aider :(

alé a+

N*M*B
0
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
3 nov. 2006 à 15:45
bin, les TStringList te permet d'associer un Object (TObject) à chaque élément(cad chaque string).

typiquement, c'est très utile pour les combo box. comme ça tu peux avoir directement une référence à la class correspondante à l'item selectionner par l'utilisateur.

Aussi, tu peux y affecter des object que tu créer spécilament pour ta list.
Dans ce cas, il FAUT les détruire avant de faire un .clear sur ton stirng list.
sinon, t'as des fuite de mémoire.

perso, je me sert de ce principe pour retourner un tableau d'object qiu doivent s'afficher sous form de list sur une interface utilisateur. comme ça j'ai le text d'affichage ET l'object au même endroit. facile :)

regarde l'aide, c'est bien expliquer.

PS: au cas ou cela ne serrait pas clair pour toi, les items d'un combobox sont en fait un TStringList. donc manipulable comme tel.
0
Rejoignez-nous