157 lines
3.7 KiB
Plaintext
157 lines
3.7 KiB
Plaintext
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.
|