Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.02.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.009 c
1-38822
Maxio
2004-02-04 17:08
2004.02.13
Проценты


14-39017
Ig
2004-01-26 00:03
2004.02.13
Перехват сообщения Windows


1-38807
Layner
2004-02-03 08:36
2004.02.13
Подскажите, как


1-38865
Фдуч
2004-02-01 13:51
2004.02.13
как узнать номер текущего mdichild


1-38796
GrayFace
2004-02-03 13:37
2004.02.13
Несовместимость с прошлыми версиями. DsgnIntf.pas, proxies.pas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский