Вверх ↑
Ответов: 16884
Рейтинг: 1239
#1: 2011-07-30 13:57:43 ЛС | профиль | цитата
В принципе у меня число попугаев одинаково.
testmulti.png
Разница только в размере *.pas - файлов: nesco = 6255, на штатных = 4874.

И число попугаев на 10000 повторов
for10000.png
------------ Дoбавленo в 13.57:
nesco писал(а):
Короче, все остается как есть. Ничего я переделывать не буду,

А я бы все ж таки изменил
#pas
procedure THiMultiBlockFindM._work_doMultiBlockFind;
var
i: integer;
Text: string;
dt: TData;
mt: PMT;
initmt: boolean;
begin
text := ReadString(_Data, _data_Text); // Читаем Текст
dtNull(dt); // Чистим dt
if (FListTag.Count = 0) or (text = ') then exit; // и нахрена мы это все делали если FListTag
// оказался пустым ?
// Так "защита от дурака" превращается в
// "дурацкую защиту".
for i := 0 to FListTag.Count - 1 do
begin
mt := nil;
initmt := true;
findblock(text, FListTag.Items[i]);
if(i >= 0) and (i < FCount) then _hi_onEvent(onResult[i], dt);
if Assigned(mt) then mt_free(mt);
end
end;

// Более логично

procedure THiMultiBlockFindM._work_doMultiBlockFind;
var
i: integer;
Text: string;
dt: TData;
mt: PMT;
initmt: boolean;
begin
if (FListTag.Count = 0) then exit; // Уходим если FListTag пустой. Если нет то
text := ReadString(_Data, _data_Text); // читаем текст
if (text = ') then exit; // Уходим если текста нет
dtNull(dt);
for i := 0 to FListTag.Count - 1 do
begin
mt := nil;
initmt := true;
findblock(text, FListTag.Items[i]);
if(i >= 0) and (i < FCount) then _hi_onEvent(onResult[i], dt);
if Assigned(mt) then mt_free(mt);
end
end;
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 2testmulti.png [53.2KB] [602], for10000.png [13.4KB] [604]