unit DReTestMain; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls, Vcl.Buttons, Tocsg.Controls; const APP_NAME = 'RegExTest'; type TDlgReTestMain = class(TForm) pnTop: TPanel; pnClient: TPanel; mmInput: TMemo; mmText: TMemo; pnBottom: TPanel; mmResult: TMemo; btnFind: TSpeedButton; btnOpenFile: TSpeedButton; OpenDialog: TOpenDialog; procedure btnFindClick(Sender: TObject); procedure btnOpenFileClick(Sender: TObject); private { Private declarations } MgCtrl_: TManagerInputControlsData; sKvDir_: String; public { Public declarations } Constructor Create(aOwner: TComponent); override; Destructor Destroy; override; end; var DlgReTestMain: TDlgReTestMain; implementation uses Tocsg.Path, Tocsg.PCRE, Tocsg.KvFilter, Tocsg.Safe, Tocsg.KvFilter.types; {$R *.dfm} Constructor TDlgReTestMain.Create(aOwner: TComponent); procedure InitCtrl; var sKvPath: String; begin sKvDir_ := 'C:\Program Files\Tocsg\eCrmHome\bin\'; if not FileExists(sKvDir_ + 'KeyViewFilter.dll') then begin sKvDir_ := GetRunExePathDir + 'bin\'; if not FileExists(sKvDir_ + 'KeyViewFilter.dll') then sKvDir_ := ''; end; if sKvDir_ = '' then begin btnFind.Height := 65; btnOpenFile.Visible := false; end; end; begin Inherited Create(aOwner); MgCtrl_ := TManagerInputControlsData.Create(CutFileExt(GetRunExePath) + '.ini'); MgCtrl_.RegInputCtrl(mmInput); MgCtrl_.Load; InitCtrl; end; Destructor TDlgReTestMain.Destroy; begin FreeAndNil(MgCtrl_); Inherited; end; procedure TDlgReTestMain.btnOpenFileClick(Sender: TObject); var KvFilter: TKvFilter; sTempPath: String; StrList: TStringList; begin if (sKvDir_ = '') or not DirectoryExists(sKvDir_) then begin MessageBox(Handle, PChar('¹®¼­ ÇÊÅÍ ¸ðµâÀÌ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù.'), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; OpenDialog.FileName := ''; if not OpenDialog.Execute(Handle) then exit; mmText.Clear; Guard(KvFilter, TKvFilter.Create(sKvDir_, 360)); sTempPath := GetRunExePathDir + '$Temp.$kv'; if KvFilter.FilterFile(OpenDialog.FileName, sTempPath) = KVERR_Success then begin if not FileExists(sTempPath) then begin MessageBox(Handle, PChar('ÇØ´ç ÆÄÀÏ¿¡¼­ ÅØ½ºÆ®¸¦ ÃßÃâÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.'), PChar(Caption), MB_ICONWARNING or MB_OK); exit; end; Guard(StrList, TStringList.Create); try StrList.LoadFromFile(sTempPath, TEncoding.UTF8); except StrList.LoadFromFile(sTempPath); end; DeleteFile(sTempPath); mmText.Text := StrList.Text; Caption := APP_NAME + Format(' - ÆÄÀÏ ¿­±â : %s', [ExtractFileName(OpenDialog.FileName)]); end else MessageBox(Handle, PChar('ÇØ´ç ÆÄÀÏ¿¡¼­ ÅØ½ºÆ®¸¦ ÃßÃâÇÒ ¼ö ¾ø¾ú½À´Ï´Ù.'), PChar(Caption), MB_ICONWARNING or MB_OK); end; procedure TDlgReTestMain.btnFindClick(Sender: TObject); var nHitCnt: Integer; sResultStr: String; begin mmInput.Text := Trim(mmInput.Text); mmText.Text := Trim(mmText.Text); if mmInput.Text = '' then begin MessageBox(Handle, PChar('°Ë»ö¾î/ÆÐÅÏÀ» ÀÔ·ÂÇØ ÁֽʽÿÀ.'), PChar(Caption), MB_ICONWARNING or MB_OK); mmInput.SetFocus; exit; end; if mmText.Text = '' then begin MessageBox(Handle, PChar('³»¿ëÀ» ¸ÕÀú ÀÔ·ÂÇØ ÁֽʽÿÀ.'), PChar(Caption), MB_ICONWARNING or MB_OK); mmText.SetFocus; exit; end; mmResult.Clear; MgCtrl_.Save; nHitCnt := TTgPcre.GetMatchValues(mmText.Text, StringReplace(mmInput.Text, #13#10, '', [rfReplaceAll]), sResultStr); if nHitCnt > 0 then begin mmResult.Text := GetCountOverlapWords(sResultStr); end; end; end.