Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.13;
Скачать: CL | DM;

Вниз

Теряется память!!!!   Найти похожие ветки 

 
snake1977   (2004-02-04 13:11) [0]

Здравствуйте!! Подскажите, где в этой процедуре происходт потеря памяти??? при каждом ее вызове, память занимаемая программой увеличивается на 56кб :((. причем ничего в дирректории нет, т.е. список передается пустым и возвращзается пустым.

Procedure ScanDir(InitPath,Mask:String; FileList:TStrings);
Var sr:TSearchRec;
Begin
FindFirst(InitPath+"\"+Mask,faAnyFile,sr);
repeat
if (sr.Name<>"..") and (sr.Name<>".") and (sr.Name<>"") Then
Begin
if (sr.Attr and faDirectory)<>faDirectory Then FileList.Append(InitPath+"\"+sr.Name);
End;
until FindNext(sr)<>0;
FindFirst(InitPath+"\*.*",faDirectory,sr);
repeat
if (sr.Name<>"..") and (sr.Name<>".") and (sr.Name<>"") Then ScanDir(InitPath+"\"+sr.Name,Mask,FileList);
until FindNext(sr)<>0;
End;


 
Тимохов ©   (2004-02-04 13:13) [1]

FindClose кто делать будет?
И еще - мы не знам, что у тебя в scandir?


 
Тимохов ©   (2004-02-04 13:14) [2]

Кусочек справки

Note: FindFirst allocates resources (memory) which must be released by calling FindClose.


 
Devel   (2004-02-04 13:16) [3]

F1 + FindFirst:
Note: FindFirst allocates resources (memory) which must be released by calling FindClose.


 
snake1977   (2004-02-04 13:17) [4]

а FindClose делаеться перед концом кадого вызова процедуры или в конце всех рекурсивных цепочек??

объясните "И еще - мы не знам, что у тебя в scandir?" что имелось ввиду??
параметром преедается каталог и маска поиска . Сканируемый каталог имеет около 10 подкаталогов в каждом из которых есть еще по 3 подкаталога, где уже находяться файлы.


 
Dimka Maslov ©   (2004-02-04 13:18) [5]

FindClose - перед последним endом


 
snake1977   (2004-02-04 13:20) [6]

поставил :)
тпереь по 8кб теряется :((

Procedure ScanDir(InitPath,Mask:String; FileList:TStrings);
Var sr:TSearchRec;
Begin
FindFirst(InitPath+"\"+Mask,faAnyFile,sr);
repeat
if (sr.Name<>"..") and (sr.Name<>".") and (sr.Name<>"") Then
Begin
if (sr.Attr and faDirectory)<>faDirectory Then FileList.Append(InitPath+"\"+sr.Name);
End;
until FindNext(sr)<>0;
FindFirst(InitPath+"\*.*",faDirectory,sr);
repeat
if (sr.Name<>"..") and (sr.Name<>".") and (sr.Name<>"") Then ScanDir(InitPath+"\"+sr.Name,Mask,FileList);
until FindNext(sr)<>0;
FindClose(sr);
End;


 
snake1977   (2004-02-04 13:21) [7]

пардон :))
не заметил что два раза вызывается findFirst


 
Тимохов ©   (2004-02-04 13:26) [8]

findclose - для кадого findfirst.

Высказываение "И еще - мы не знам, что у тебя в scandir?" прошу снять - не заметил, что это просто рекурсия - подумал, что еще некий метод. Виноват.


 
GrayFace ©   (2004-02-04 14:13) [9]

Еще TSearchRec, наверное, надо free делать


 
Opuhshii ©   (2004-02-04 14:27) [10]

2GrayFace © (04.02.04 14:13) [9]
TSearchRec - record, не класс,..



Страницы: 1 вся ветка

Текущий архив: 2004.02.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.029 c
14-39074
MYSTERYO
2004-01-18 01:04
2004.02.13
Каждый программист втайне мечтает быть автором AI, который


7-39103
Artem03
2003-11-28 14:49
2004.02.13
Занят (открыт) файл (txt, xls и пр.) или нет.


1-38912
Olivka
2004-02-04 12:21
2004.02.13
Параметры запроса в FIBdataset.UpdateSQL


1-38869
maxim_caban
2004-02-02 10:33
2004.02.13
Запрет контекстного меню в диалоге сохранения файла.


9-38665
yava2
2003-08-02 15:38
2004.02.13
Параллельное проигрывание с DXWave