这是Synopse delphi open source的连字符lib。
该演示是一个控制台应用程序。我不知道如何在GUI应用程序中使用它。
以下是我的测试,但不起作用。它不显示连字符(或分隔符号)的单词。 lib可以是downloaded here:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, hyphen, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure testhyphenator;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.testhyphenator;
var
h: THyphen;
s: string;
F, L: Integer;
begin
s := 'hyph_en_US.txt'; //this is from the folder, is that correct to call?
if FileExists(s) then
begin
F := FileOpen(s, fmOpenRead);
L := FileSeek(F, 0, soFromEnd);
if L > 0 then
begin
SetLength(s, L);
FileSeek(F, 0, soFromBeginning);
FileRead(F, s[1], L);
end;
FileClose(F);
end;
h := THyphen.Create(s);
h.Execute('pronunciation'); //is this correct?
ShowMessage(h.filllist); //not display hyphenated word
end;
它不显示带连字符的单词。在演示中,我也对构造函数感到困惑:
H := THyphen.create('ISO8859-1'#10'f1f'#10'if3fa/ff=f,2,2'#10'tenerif5fa');
writeln('"',H.Execute('SchiffahrT'),'"'); writeln(H.FillList);
...
作者还附上了obj文件。如果我想将它编译成单个exe,该怎么做?
能帮助我了解如何正确使用它吗?
非常感谢。
答案 0 :(得分:2)
免责声明:我已经利用了最新的连字符分布,它可能与latest version不同步。
以下是我的观点:
分发汇编
hyphen.rc文件
连字符文字HYPH_EN_US.dic
hyphen.res
文件hyph_en_EN.dic
和/或hyph_en_US.dic
。*。dic我的发行版中可用的文件
解释您的代码段中的评论
s := 'hyph_en_US.txt'; //this is from the folder, is that correct to call?
没有!正确的文件扩展名为.dic
。你应该写:
s := 'hyph_en_US.dic;
以下是好的(你可以参考THyphen类的定义):
Execute('pronunciation'); // is this correct?
以下是好的(但它不起作用,因为h
实例未正确初始化{/ 1}}:
THyphen
您对构造函数的关注
ShowMessage(h.filllist); //not display hyphenated word
这只是设置H := THyphen.create('ISO8859-1'#10'f1f'#10'if3fa/ff=f,2,2'#10'tenerif5fa');
的正确方法之一(再次参考THyphen
类的定义)。
E.g:
THyphen
使用Delphi 2007在GUI应用程序中使用连字符
H := THyphen.create('EN');
实例构造正确,我就可以说它没关系(别忘了将THyphen
资源文件包含在hyphen.res
中,{$R hyphen.res}
文件已经存在在hyphen.obj
单位中链接。最后但并非最不重要
答案 1 :(得分:1)
我没有方便的Delphi安装,所以要了解你可能需要稍微调整一下。
查看连字符后,我相信您使用的不正确。构造函数的参数是语言或字符集。
h := THyphen.Create('UTF-8');
或(根据您的文件名,我认为您需要下一个)
h := THyphen.Create('EN');
然后“Execute”用于生成传入的字符串的连字符版本。“Execute”是一个返回新字符串的函数。你正在调用它,但没有对结果做任何事情。
NewStr := h.Execute('correct');
“NewStr”现在应该等于“正确”。
如果我正确阅读了代码,“FillList”函数和过程会返回最后一个执行单词的所有可能的连字符可能性列表。