GenEars
Messages postés16Date d'inscriptionmercredi 2 novembre 2005StatutMembreDernière intervention25 janvier 2008
-
2 nov. 2006 à 17:21
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 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 ?
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 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, ...))
N_M_B
Messages postés94Date d'inscriptionmardi 9 mai 2006StatutMembreDerniè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 :(
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 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.