Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Стоит сказать то, что если действительно требуется высокая скорость работы, то лучшего всего переводить процедуру StrEQ на Assembler.
function
StrEq(Data1,Data2: Pointer; Len: Word; CS: Boolean): Boolean; type
Arr = array[1..$FFFF] of Char;
var
x: Word;
d1: ^Arr absolute Data1;
d2: ^Arr absolute Data2;
begin
StrEq:=True;
for x:=1 to Len do if d1^[x]<>d2^[x]then
begin
if not CS and (UpCase(d1^[x])=UpCase(d2^[x])) then Continue;
StrEq:=false;
exit;
end;
end
;
function
FindStr(var f: file; SearchPattern: Pointer; PatternLength: Word;
CS: Boolean): Longint;
const
Size: Word = 16384;
var
Buffer: Pointer;
Position: LongInt;
BufSize,NBlocks,i,j,Fake: Word;
begin
BufSize:=Size+PatternLength;
GetMem(Buffer,BufSize);
NBlocks:=((FileSize(f)-FilePos(f)) div size)+1;
Position:=FilePos(f);
for i:=1 to NBlocks do
begin
BlockRead(f,Buffer^,BufSize,Fake);
for j:=0 to size do
begin
{$IfDef Ver70}
if StrEq(Ptr(Seg(Buffer^),Ofs(Buffer^)+j),SearchPattern,PatternLength,CS)
then
{$EndIf}
{$IfDef VirtualPascal}
if StrEq(Ptr(Ofs(Buffer^)+j),SearchPattern,PatternLength,CS) then
{$EndIf}
begin
FreeMem(Buffer,BufSize);
if Position>FileSize(f)then Position:=-1;
FindStr:=Position;
Seek(f,Position+PatternLength);
Exit;
end;
Inc(Position);
end;
Seek(f,FilePos(f)-PatternLength+1);
end;
FreeMem(Buffer,BufSize);
FindStr:=-1;
end
;