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

📄 zjm.pas

📁 delphi开发的一个文书理解系统
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit ZJM;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Menus, ComCtrls,dmk,bdbh,Unit2;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    Button1: TButton;
    OpenDialog1: TOpenDialog;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Memo2: TMemo;
    Memo1: TMemo;
    Label2: TLabel;
    Button6: TButton;
    Memo3: TMemo;
    MainMenu1: TMainMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    O1: TMenuItem;
    S1: TMenuItem;
    X1: TMenuItem;
    C1: TMenuItem;
    Y1: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    Label3: TLabel;
    Label4: TLabel;
    N9: TMenuItem;
    N10: TMenuItem;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure X1Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }

   end;


var
  Form1: TForm1;




implementation

uses dl;

//定义扫描函数:
Function scanner(cfstr:string):string;
  var
    n,i:integer;
    fstr:Array[1..60] of string;
    begin
      n:=StrLen(PChar(string(cfstr)));
      for i:=1 to n do
        fstr[i]:=copy(cfstr,i,1);
        scanner:=fstr[1];
    end;




    ///////////////////////////////////////////////////
    ///////                      //////////////////////
    //////     第二种句式的理解  //////////////////////
    //////                      ///////////////////////
    ///////////////////////////////////////////////////

Function yffunction1(yffenxi,bdlen:string):string; // bdlen记录标点符号的位置,即第二个句号的位置与第二句话的开端的长度(第二句话的长度)。
  var
    poslong,poslat,str:string;
    i,flag:integer;
   // bdlen记录标点符号的位置,即第二个句号的位置与第二句话的开端的长度(第二句话的长度)。
    fxstr:Array[1..60] of string;
    resultstr,unittype1,unittype2:string;
    diming:array of DimingRecord;



    begin
    flag:=0;
    resultstr:='';
      //将第二句话的每个字母赋值给fxstr数组。
      for i:=1 to 14 do
        begin
          fxstr[i]:=copy(yffenxi,i,1);
        end;

        i:=1;
      //部队类型的理解:即坦克团等。
      while i<=strtoint(bdlen) do
        begin
         resultstr:=resultstr+fxstr[i];
         i:=i+1;
         flag:=flag+1;
          if resultstr='TKT' then   //坦克团
            break;

          if resultstr='FHT' then   //防化团
            break;
            
        end;

        if (resultstr='TKT') or  (resultstr='FHT') then
           ShowMessage('第二句话部队类型分析处语法正确')
        else
           ShowMessage('第二句话部队类型分析处语法错误');

           unittype1:=resultstr; //赋值给unittype1用于最好的函数的输出.


            // 动词理解,比如担任、受命等:
          resultstr:='';
          for i:=flag+1 to strtoint(bdlen) do
          begin
            resultstr:=resultstr+fxstr[i];
            flag:=flag+1;
          if resultstr='DR' then   //预备队
            begin
            break;
            end;
          if resultstr='SM' then   //补给队
            begin
            break;
            end;
          end;
           if (resultstr='DR') or  (resultstr='SM') then
           ShowMessage('第二句话动作分析处语法正确')
          else
           ShowMessage('第二句话动作分析处语法错误');



        //职务类型的理解:
        resultstr:='';
        for i:=flag+1 to strtoint(bdlen) do
          begin
            resultstr:=resultstr+fxstr[i];
            flag:=flag+1;
          if resultstr='YBD' then   //预备队
            begin
            break;
            end;
          if resultstr='BJD' then   //补给队
            begin
            break;
            end;
          end;
        if (resultstr='YBD') or  (resultstr='BJD') then
           ShowMessage('第二句话职务类型分析处语法正确')
        else
           ShowMessage('第二句话职务类型分析处语法错误');

           unittype2:=resultstr;

           //介词的理解:
           resultstr:='';
        for i:=flag+1 to strtoint(bdlen) do
          begin
            resultstr:=resultstr+fxstr[i];
            flag:=flag+1;
          if resultstr='Y' then
            begin
            break;
            end;
          if resultstr='Z' then
            begin
            break;
            end;
          end;
        if (resultstr='Y') or  (resultstr='Z') then
           ShowMessage('第二句话介词分析处语法正确')
        else
           ShowMessage('第二句话介词分析处语法错误');

           //地名理解:
            resultstr:='';
        for i:=flag+1 to strtoint(bdlen) do
          begin
            resultstr:=resultstr+fxstr[i];
          //  flag:=flag+1;
           if resultstr='GD' then   //预备队
            begin
            break;
            end;
           end;
          
        if resultstr='GD' then
           ShowMessage('第二句话地名分析处语法正确')
        else
           ShowMessage('第二句话地名分析处语法错误');

             SetLength(diming,20);
             diming[5].id:='GD';
             diming[5].name:='高地';
             diming[5].x:='52495';
             diming[5].y:='62312';

             if resultstr='GD' then
             begin
             poslong:=diming[5].x;
             poslat:=diming[5].y;
             end;
            str:='Drawicon'+'('+unittype1+','+unittype2+','+poslong+','+poslat+')';

           // str:=fxstr[3] ;

            yffunction1:=str;
    end;

 //////////////////////////////////////////////////
 /////////////////////////////////////////////////
 ////////////////////////////////////////////////
 ///////////////////////////////////////////////
 ////////////////////////////////////////////////






Procedure MemoReadOnly();  //使各Memo框只能读
begin
  Form1.Memo1.ReadOnly:=True;
  Form1.Memo2.ReadOnly:=True;
  Form1.Memo3.ReadOnly:=True;
end;


Procedure  MemoClear(); //清除各Memo框中的内容
begin
   Form1.Memo1.text:='';
   Form1.Memo2.text:='';
   Form1.Memo3.text:='';
end;

  var
     F1: TextFile;//定义一个文本文件变量
     guanjianci:TextFile;//定义一个文本文件变量用于读取关键词文档
     cifastr:Array[1..60] of string;  //从cifa.txt中读出关键词库中内容的字符串
     t:integer;//cifastr的长度
     kongge: array[1..20] of integer;//存放空格在关键词库每行中的位置



{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
   MemoClear();
   MemoReadOnly(); 
   OpenDialog1.Execute ;//弹出打开对话框
   edit1.Text :=OpenDialog1.FileName; //显示要打开的文件名
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  Line:string;
begin
  If length(Edit1.Text)<>0 then //输入了文件名
     begin
         AssignFile(F1,Edit1.Text );
         Reset(F1);
         Memo1.Lines.Clear ;
         while not eof(F1)  do //不是文件的结尾
            Begin
               readln(F1,line); //读取一行
               Memo1.Lines.Add(Line);//把该行显示在Memo1中
            end;
     end
     else
        ShowMessage('必须输入文件名');
end;

procedure TForm1.Button3Click(Sender: TObject);
Var
  i:integer;
begin
  if Memo1.Modified   then //如果Memo1中的内容已经修改
      begin
          Rewrite(f1); //创建打开文件
          for i:=0 to Memo1.Lines.Count -1 do //把Memo1中的内容写到文件中去
                Writeln(f1,Memo1.lines[i]);
                ShowMessage('文书已经保存');
      end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
  Application.Terminate;  //关闭文件
end;

⌨️ 快捷键说明

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