0

これは、 Synopsedelphiオープンソースによるハイフネーションライブラリです。

デモはコンソールアプリケーションです。GUIアプリケーションでの使い方がわかりません。

以下は私のテストですが、動作しません。ハイフン(または区切り文字)付きの単語は表示されません。libはここからダウンロードできます:

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にコンパイルしたい場合、それを行う方法は?

正しく使用する方法を理解するのを手伝ってもらえますか?

どうもありがとう。

4

2 に答える 2

2

免責事項:最近ではないハイフンの配布を利用しました。最新バージョンと同期していない可能性があります。

これが私のポイントです:

ディストリビューションの編集

  • Delphi 7でコンパイルしましたが、問題ありませ

hyphen.rcファイル

  • ディストリビューションにhyph_en_EN.dicファイルはありません。hyphen.resを再構築する場合は、次の方法を使用してhyphen.rcを修正する必要があります。

ハイフンテキストHYPH_EN_US.dic

  • hyphen.resディストリビューション内のファイルが含まれているかどうか、hyph_en_EN.dicおよび/またはをチェックしていませんhyph_en_US.dic

*.dic私のディストリビューションで利用可能なファイル

  • hyph_it_IT.dic
  • hyph_es_ES.dic
  • hyph_fr_FR.dic
  • hyp_en_US.dic
  • hyp_de_DE.dic

スニペット内のコメントへの回答

s := 'hyph_en_US.txt'; //this is from the folder, is that correct to call? 

いいえ!正しいファイル拡張子は.dicです。代わりに次のように書く必要があります。

s := 'hyph_en_US.dic;

以下はOKです(THyphenクラスの定義を参照できます):

Execute('pronunciation'); // is this correct? 

以下は問題ありません(ただしhTHyphenインスタンスが適切に初期化されていないため、機能しません)。

ShowMessage(h.filllist); //not display hyphenated word

コンストラクターに関するあなたの懸念

H := THyphen.create('ISO8859-1'#10'f1f'#10'if3fa/ff=f,2,2'#10'tenerif5fa');

これは、設定するための適切な方法の1つにすぎません(特にクラスTHyphenの定義を参照してください)。THyphen

例えば:

H := THyphen.create('EN');

Delphi2007を使用したGUIアプリでのハイフンの利用

  • インスタンスが適切に構築されていれば問題ないと言えます(リソースファイルTHyphenを含めることを忘れないでください。ファイルはすでにユニットにリンクされています)。hyphen.res{$R hyphen.res}hyphen.objhyphen.pas

最後になりましたが、

  • Synopseの背後にいる偉大な人物であるArnaudBouchezに気軽に連絡してください。彼はStackoverflowのメンバーであり、常に確実に支援する準備ができています。さらに、トップユーザーです。
于 2012-04-12T19:43:09.570 に答える
1

Delphiのインストールが手元にないので、これを少し調整する必要があるかもしれないことを理解してください。

ハイフンコードを見た後、あなたはそれを間違って使用していると思います。コンストラクターのパラメーターは、言語または文字セットです。

h := THyphen.Create('UTF-8');

または(ファイル名に基づいて、次のファイルが必要だと思います)

h := THyphen.Create('EN');

次に、「Execute」を使用して、渡された文字列のハイフン付きバージョンを生成します。「Execute」は、新しい文字列を返す関数です。あなたはそれを呼んでいますが、結果に対して何もしていません。

NewStr := h.Execute('correct');

「NewStr」は「cor-rect」と等しくなるはずです。

コードを正しく読んだ場合、「FillList」関数とプロシージャは、実行された最後の単語に対して可能なすべてのハイフネーションの可能性のリストを返します。

于 2012-04-12T18:23:46.583 に答える