Предлагаю такой вариант.
Код:
Var
Massiv:array of byte;//Где ищем
Finder:array [1..255] of byte; //Что ищем
NumElements:integer; //Количество элементов в массиве
LengthFinder:byte; // Длина массива, который ищем
I:integer;
CountFinder:integer; //количество итераций поиска
j:byte;
MassivFound:boolean;
begin
NumElements:=1000000;
SetLength(Massiv,NumElements);
//Запролняем массив
For I:=0 to NumElements-1 do
begin
Massiv[i]:=Random(255);
end;
//Теперь возьмем и запишем в Massiv нужную нам комбинацию (для примера)
Massiv[333500]:=40;
Massiv[333501]:=41;
Massiv[333502]:=42;
Massiv[333503]:=43;
Massiv[333504]:=44;
Massiv[333505]:=45;
LengthFinder:=6; //Количесво искомых элементов
CountFinder:=NumElements-LengthFinder;
//заполним искомый массив
Finder[1]:=40;
Finder[2]:=41;
Finder[3]:=42;
Finder[4]:=43;
Finder[5]:=44;
Finder[6]:=45;
MassivFound:=False;
For I:=0 to CountFinder-1 do
begin
if Massiv[i]=Finder[1] then //Если элемент массива совпал с первым элементом поисковой строки
begin
MassivFound:=True;
for J:=1 to LengthFinder do
if Massiv[I+J-1]<>Finder[j] then
begin
MassivFound:=False;
Break;
end;
end;
If MassivFound=True then Break;
end;
if MassivFound=True then
ShowMessage('Found at '+IntToStr(I)+' position')
else ShowMessage('Not Found');end;
__________________
Хорошо написанная программа не требует документации
ICQ 9-184-668.
|