mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-06-21 20:58:16 +02:00
66 lines
1.3 KiB
ObjectPascal
66 lines
1.3 KiB
ObjectPascal
{$ifdef fpc}
|
|
{$mode objfpc}
|
|
{$h+}
|
|
{$endif}
|
|
Program ex1;
|
|
|
|
uses StrUtils;
|
|
|
|
Const
|
|
S : PChar = 'Some very long string with some words in it';
|
|
Starts : Array[1..3] of Integer = (0,10,41);
|
|
|
|
Procedure DoTest(Sub:String; Start : Integer; O : TStringSearchOptions);
|
|
|
|
Var
|
|
Res : String;
|
|
P : PChar;
|
|
|
|
begin
|
|
Write('Searching for "',Sub,'" starting at pos ',Start,' : ');
|
|
P:=SearchBuf(Pchar(S),Length(S),Start,0,Sub,O);
|
|
if (P=Nil) then
|
|
Writeln('Not found')
|
|
else
|
|
begin
|
|
Res:=StringOfChar(' ',Length(Sub));
|
|
SetLength(Res,Length(Sub));
|
|
Move(P^,Res[1],Length(Sub));
|
|
Writeln('Found at pos ',(P-PChar(S)),' : ',Res);
|
|
end;
|
|
end;
|
|
|
|
Procedure DoTests(Sub : String; O : TStringSearchOptions);
|
|
|
|
Var
|
|
I : Integer;
|
|
|
|
begin
|
|
Writeln('Searching up');
|
|
For I:=1 to 3 do
|
|
DoTest(Sub,Starts[i],O);
|
|
Include(O,soDown);
|
|
Writeln('Searching down');
|
|
For I:=1 to 3 do
|
|
DoTest(Sub,Starts[i],O);
|
|
end;
|
|
|
|
Procedure DoAllTests(S : String);
|
|
|
|
begin
|
|
Writeln('No options');
|
|
DoTests(S,[]);
|
|
Writeln('Match case:');
|
|
DoTests(S,[soMatchCase]);
|
|
Writeln('Whole word:');
|
|
DoTests(S,[soWholeWord]);
|
|
Writeln('Match case, whole word:');
|
|
DoTests(S,[soMatchCase,soWholeWord]);
|
|
end;
|
|
|
|
begin
|
|
DoAllTests('very');
|
|
DoAllTests('Very');
|
|
DoAllTests('in');
|
|
DoAllTests('In');
|
|
end. |