![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Добрый день. Есть код функции:
Код:
function DelParagraph(const Str1,Str2:string; L:integer):string; var J,I,Count,D,G:integer; Word1,Word2: string; T1,T2:TStringList; begin T1:=TStringList.Create; T2:=TStringList.Create; T2.Sorted := true; T2.Duplicates := dupIgnore; Result:=''; if Length(Str1) = 0 then Exit; Count:=0; try T1.Text:=SpliteText(Del(Str1)); G:=(T1.Count); T2.Text:=SpliteText(Str2); for I := 0 to T2.Count-1 do begin Word1:=(T2[i]); begin for J := 0 to T1.Count-1 do begin Word2:=(T1[J]); if CompareWords(Word1,Word2) then begin Inc(Count); end; end; end; end; if (Count = 0) or (G = 0) then Exit else D:=((Count*100 Div G)); if D > L then Result:=Str1; finally FreeAndNil(T1); FreeAndNil(T2); end; end; Del, SpliteText, CompareWords - вызываемые функции, то же имеют TStringList и везде try-finally-end; Вызов функции: FullStr3:=DelParagraph(FullStr2,SWords,L); в общем функция получает две строки1 и 2 и число, сравнивает слова в строках и если число совпадений превышает порог переносит строку1 на выход. Проблема состоит в том что при завершении программы ReportMemoryLeaksOnShutdown выдает сообщение о небольшой утечке памяти в TStringList если заблокировать вызов функции, то утечка пропадает ВОпросы: 1. как вообще можеть быть утечка при наличии try-finally-end вроде бы гарантирующее уничтожение объектов 2. как вообще определить где конкретно это происходит 3. может быть код кривой? тогда где? |