123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- {$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.
|