![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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. может быть код кривой? тогда где? |