Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在delphi上复制段落中的所有单词并添加每个单词_Delphi_Delphi Xe2_Delphi 7_Delphi Xe5 - Fatal编程技术网

如何在delphi上复制段落中的所有单词并添加每个单词

如何在delphi上复制段落中的所有单词并添加每个单词,delphi,delphi-xe2,delphi-7,delphi-xe5,Delphi,Delphi Xe2,Delphi 7,Delphi Xe5,使用Delphi 7,如果我有下面左边窗口中显示的一些文本,我如何提取段落中的所有单词和标点符号,并将它们复制到另一个窗口中,如右边的窗口,后面跟着一个# 如果我理解正确,您需要所谓的“标记器”或“lexer” D7在类单元中有一个内置的,误导性地称为TParser(误导性地说,因为解析通常意味着“语法分析”步骤,这可能是文本标记化之后的步骤,就像编译器操作中的f.i.一样) 不管怎么说,iirc,Delphi的TParser旨在处理DFM文件的文本,因此不一定会按照您的需要将文本拆分,但这只是

使用Delphi 7,如果我有下面左边窗口中显示的一些文本,我如何提取段落中的所有单词和标点符号,并将它们复制到另一个窗口中,如右边的窗口,后面跟着一个#


如果我理解正确,您需要所谓的“标记器”或“lexer”

D7在类单元中有一个内置的,误导性地称为TParser(误导性地说,因为解析通常意味着“语法分析”步骤,这可能是文本标记化之后的步骤,就像编译器操作中的f.i.一样)

不管怎么说,iirc,Delphi的TParser旨在处理DFM文件的文本,因此不一定会按照您的需要将文本拆分,但这只是一个开始。例如,当它标记“:=”时,它将返回“:”和“=”作为两个单独的标记,但是,当NextToken/TokenString连续返回这些标记时,您当然可以将它们重新连接起来。顺便说一句,有几种替代方法可以使用免费软件Jedi JCL和JVCL库中的类来实现tokeniser

如果q左侧的文本窗口位于您自己的应用程序中,请编写如下代码 你可以做你想做的事:

procedure TForm1.Tokenise;
var
  SS : TStringStream;
  TokenText : String;
  Parser : TParser;
begin
  SS := TStringStream.Create(Memo1.Lines.Text);
  Parser := TParser.Create(SS);

  try
    while Parser.Token <> #0 do begin
      TokenText :=  Parser.TokenString;
      Memo2.Lines.Add(TokenText + '#');
      Parser.NextToken;
    end;
  finally
    Parser.Free;
    SS.Free;
  end;

end;
程序TForm1.Tokenise;
变量
SS:TStringStream;
TokenText:字符串;
解析器:TParser;
开始
SS:=TStringStream.Create(Memo1.Lines.Text);
解析器:=TParser.Create(SS);
尝试
当Parser.Token#0开始时
TokenText:=Parser.TokenString;
备忘录2.行。添加(TokenText+'#');
Parser.NextToken;
结束;
最后
解析器。免费;
SS.免费;
结束;
结束;

如果文本窗口在另一个应用程序中,您当然也需要一种从中检索文本的方法。

您正在努力完成这项任务的哪一部分?什么版本的Delphi?您的标签令人困惑。如果有帮助,请学习delphi 7或delphi xe5Glad。如果是的话,请点击左边的“勾选”图标来“接受”答案……我很好奇为什么会投反对票?不管怎样,我是最重要的。谢谢@Jerrydoge。也许有人会告诉我们。也许-1是出于对OP后来的q的不满,现在被删除了。