testmulti.png
И число попугаев на 10000 повторов
for10000.png
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;