お知らせ

電子会議

ライブラリ

パレット

Delphi FAQ検索

Delphi FAQ一覧

サンプル蔵





FDelphi FAQ
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル

"EBMユニット(interface)"

この発言は
#01367 ぜえた さんの高速(?)複数文字列検索(拡張BM法)
に対するコメントです

// 拡張 Boyer-Moore法を使った複数文字列検索。(interface) unit EBM; interface uses Windows, SysUtils, Classes; type TProgressEvent = procedure(Sender: TObject; var Cancel: Boolean) of object; TSearchOption = (soIgnoreCase, soAnsi); TSearchOptions = set of TSearchOption; PEBMSearchNext = ^TEBMSearchNext; TEBMSearchNext = array[-1..0, Char] of Integer; PEBMSearchSkip = ^TEBMSearchSkip; TEBMSearchSkip = array[0..0] of Integer; PEBMSearchAccept = ^TEBMSearchAccept; TEBMSearchAccept = array[0..0] of Integer; TEBMSearchProc = function: Boolean of object; TEBMSearch = class private FPatterns: TStrings; FStep: Integer; FOnProgress: TProgressEvent; FSearch: TEBMSearchProc; FNext: PEBMSearchNext; FSkip: PEBMSearchSkip; FAccept: PEBMSearchAccept; FMinLen: Integer; FStartPos: PChar; FEndPos: PChar; FCurPos: PChar; FStepPos: PChar; FCurState: Integer; FFoundPatternIndex: Integer; FFoundPos: PChar; CmpFlags: DWORD; FOptions: TSearchOptions; FTableValid: Boolean; procedure SetPatterns(Value: TStrings); procedure SetOptions(Value: TSearchOptions); procedure PatternsChanged(Sender: TObject); protected procedure CreateTable; function NonAnsiSearch: Boolean; function AnsiSearch: Boolean; procedure Update; virtual; function DoProgress: Boolean; virtual; public constructor Create; destructor Destroy; override; procedure SearchInit(S, E: PChar); property Patterns: TStrings read FPatterns write SetPatterns; property Search: TEBMSearchProc read FSearch; property FoundPatternIndex: Integer read FFoundPatternIndex; property Options: TSearchOptions read FOptions write SetOptions; property FoundPos: PChar read FFoundPos; property OnProgress: TProgressEvent read FOnProgress write FOnProgress; property StartPos: PChar read FStartPos; property EndPos: PChar read FEndPos; property CurPos: PChar read FCurPos; end;  Original document by ぜえた 氏 ID:(QZC05100)



ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。

Copyright 1996-2002 Delphi Users' Forum