⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 unit1.pas

📁 词库
💻 PAS
字号:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;

type
    SHLSegWord=packed record
      s_szWord:Pchar;
      s_dwPos:LongWord;
      s_fWeigth:Single;
     end;
    P_SHLSegWord=^SHLSegWord;
    TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    BitBtn1: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    BitBtn5: TBitBtn;
    BitBtn6: TBitBtn;
    BitBtn7: TBitBtn;
    BitBtn8: TBitBtn;
    Tmemo1: TMemo;
    Tmemo2: TMemo;
    Tmemo3: TMemo;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure BitBtn8Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
    DicSOF:Boolean;//----------------------------检验是否已经打开词典
  end;

var
  Form1: TForm1;

implementation
Uses
   MyDll;

//Dll中的函数接口
                    //获取指定下标的关键词


{$R *.dfm}

procedure TForm1.BitBtn8Click(Sender: TObject);
begin
   If DicSOF then
     Begin
        HLFreeUsrDict();
     End;
   HlFreeSplit();
   close;

end;

procedure TForm1.BitBtn4Click(Sender: TObject);
begin
   Tmemo1.Text :='';
   Tmemo2.Text :='';
   Tmemo3.Text :='';
end;

procedure TForm1.BitBtn3Click(Sender: TObject);
Var
   File_FilePath:String;
   SucOrFai:Bool;
begin
   if opendialog1.Execute then
      begin
          File_FilePath:=OpenDialog1.FileName;
          SucOrFai:=HLOpenUsrDict(Pchar(File_FilePath));
          If SucOrFai then
             //可以添加声音文件
             MessageDlg('装载用户字典成功',mtconfirmation,[mbok],0)
          Else
             //可以添加声音文件
             MessageDlg('装载用户字典失败',mtconfirmation,[mbok],0);
      end;

end;

procedure TForm1.BitBtn1Click(Sender: TObject);
 Var
   s:string;

   hlHandle:THandle;
   nCnt:Integer;
   i:Integer;
   R_Success:BOOL;  //分词切分成功与否的标志
   L_Word:SHLSegWord;//用于获得分词结果
   StrWord:Pchar;  //用于接收分词后的结果
   S_String:AnsiString;
   

begin
   s:='';
   Tmemo1.Text :='';
   Tmemo2.Text :='';
   Caption:='分词系统';
  if(not HLSplitInit('')) then
      begin
          Beep;
          MessageDlg('初始化分词系统失败',mtconfirmation,[mbok],0);
          application.Terminate ;
      end;



   S_String:=''; //清空临时字符串存放地的内容
   Tmemo2.Text :='';
   hlHandle:=HLOpenSplit(); //检测打开分词句柄
   If(hlHandle=INVALID_HANDLE_VALUE)then
      begin
          beep;
          MessageDlg('分词句柄没有成功打开?',mtconfirmation,[mbok],0);
          Exit;
      end;
   //开始分词
    R_Success:=HLSSplit(hlHandle,Pchar(Trim(Tmemo1.Text)),0); //???这里出错
     If R_Success then
       Begin
         //获得分词结果个数
          nCnt:= HLGetWordCnt(hlHandle);

          L_Word.s_szWord :=nil;
          L_Word.s_dwPos :=0;
          L_Word.s_fWeigth :=0.0;

          For i:=1 to nCnt do
             begin
                 L_Word:=HLGetWordAt(hlHandle,i-1);    //获取指定序号下的字符串信息

                 If L_Word.s_szWord=nil then
                    Begin
                       Beep;
                       MessageDlg('获取分词信息失败',mtconfirmation,[mbok],0);
                       Exit;
                    End
                 Else
                    Begin
                       StrWord:=L_Word.s_szWord ;

                       S_String:=StrWord;     //由于Pchar类型的不支持用"+"进行字符串的操作,故用了一个中间变量
                       S_String:=S_String+'';//进行字符串的累加;
                    End;
                 Tmemo2.Text :=S_String;

                 HlCloseSplit(hlHandle);
             end;
       End
    Else
       Begin
          Beep;
          MessageDlg('分词失败!',mtconfirmation,[mbok],0);
          HLCloseSplit(hlHandle);
       End;

end;

procedure TForm1.BitBtn5Click(Sender: TObject);
begin
    HLFreeUsrDict();
    MessageDlg('用户词典卸载成功!',mtconfirmation,[mbok],0);

end;

procedure TForm1.BitBtn6Click(Sender: TObject);
begin
    if opendialog1.execute then
      begin
      Tmemo1.Text:=ExtractFileName(opendialog1.filename);
      Tmemo1.Lines.LoadFromFile(OpenDialog1.FileName );
      end
end;

procedure TForm1.BitBtn7Click(Sender: TObject);
//var
 //i:Integer;
begin
 //for i:=0 to Tmemo3.Lines.Count-1 do
     if savedialog1.execute then
       begin
       //WriteLn(savedialog1.FileName,Tmemo3.Lines[i])
       Tmemo3.Lines.SaveToFile(savedialog1.FileName );
       Tmemo3.Lines.LoadFromFile(savedialog1.FileName );
       end
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -