Все равно ошибка
Цитата:
Сообщение от Kailon
Код:
//Функция поиска шаблона
function PatternSearch(aPattern: TBytes; aFileName: String): LongInt;
var
F: TMemoryStream;
Buf: TBytes;
Len, Step: LongInt;
begin
F := TMemoryStream.Create;
F.LoadFromFile(aFileName);
try
Len := Length(aPattern);
SetLength(Buf, Len);
Step := 0;
try
repeat
F.Seek(Step, soFromBeginning);
F.ReadBuffer(Buf, Len);
Inc(Step);
until CompareMem(Buf, aPattern, Len);
Result := F.Position; // <--- Позиция курсора в файле показывает на начало паттерна или нет? :D
except
Result := -1;
end;
finally
F.Free;
end;
end;
|
И по примеру использования: А кто сказал, что паттерн не может располагаться в самом начале файла (Offset= 0)?
Стоит возвращать (-1) если паттерн не найден. А если найден, то уже значение от 0 до ... Аналогично функции Pos().
Вы не подумайте, что я критикую и не предлагаю. Я предложил решение первым ответом. Imikle внес замечания. По сути алгоритм есть, нужно только написать. Мне лень писать, но читать чужой код я люблю