2012-04-12 4 views
0

これは、ハイフネーションライブラリのSynopse delphi open sourceです。delphiでこのハイフネーションライブラリを使用するには?

デモはコンソールアプリケーションです。私は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ファイルも囲んでいます。私はそれを1つのexeファイルにコンパイルしたいのですが、どうすればいいですか?

正しく使用する方法を教えていただけますか?

ありがとうございます。

+1

もっと具体的になりますか? *動作しません*は使用できる問題の最悪の記述です。あなたの質問に* * .objファイルをリンクする方法* '{$ LINK 'ファイルを使用してください。obj '} 'をあなたのユニットに追加します。 – TLama

+0

@TLama、返信ありがとうございます。編集をご覧ください。つまり、ハイフネーションされた単語は表示されません。 – Warren

+0

1)元のコンソールアプリのバージョンをあなたのボックスにコンパイルできましたか? 2)あなたのDelphiのバージョンは何ですか? – menjaraz

答えて

2

免責事項:最近のハイフンの流通を利用していますが、latest versionと同期していない可能性があります。ここで

は私のポイントは以下のとおりです。配布

  • コンパイル私は、Delphi 7の下でそれをコンパイルして、それがOKです。

hyphen.rcファイル

  • 分布にhyph_en_EN.dicファイルはありません。 hyphen.resを再構築する場合は、ハイフンを修正する必要があります。それはhyph_en_EN.dicおよび/またはhyph_en_US.dic含まれている天気を、私は分布のhyphen.resファイルをチェックしていない

ハイフンテキストHYPH_EN_US.dic

  • :RC以下を使用。

* .DIC

  • hyp_en_US.dic
  • hyph_fr_FR.dic
  • hyph_es_ES.dic私の分布

    • hyph_it_IT.dicで利用可能なファイル
    • hyp_de_DE.dic

    あなたのスニペットのコメント

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

    いいえ!正しいファイル拡張子は.dicです。以下は、(あなたがTHyphenクラスの定義を参照することができます)OKです

    s := 'hyph_en_US.dic; 
    

    を:あなたの代わりに書くべき

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

    次はOKです(しかし、それは同様hので動作しません。 THyphenインスタンスが正しく初期化されていません):

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

    コンストラクタ

    についてのあなたの懸念
    H := THyphen.create('ISO8859-1'#10'f1f'#10'if3fa/ff=f,2,2'#10'tenerif5fa'); 
    

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

    例:

    デルファイ2007

    • を使用してGUIアプリケーションにハイフンを活用
      H := THyphen.create('EN'); 
      

      私はそれがあまりにも長い間THyphenインスタンスが適切に構築されたとして(いけないhyphen.resリソースを含めることを忘れOKだと言うことができますファイルが{$R hyphen.res}の場合、hyphen.pasユニットにhyphen.objファイルが既にリンクされています)。

    なく、少なくとも最後

    • Arnaud BouchezSynopse背後に偉大な人物と連絡を取ること自由に感じています。彼はStackoverflowのメンバーであり、いつも確実に手助けする準備ができており、トップユーザーです。
  • +0

    あなたの詳細な説明に感謝します。私はあなたのコードをテストしました。今はOKです。このプロシージャは、可能なブレークポイントをハイフンとして生成します。 「発音」はpro = nun = ci = ationを生成する。それは音節検出として使用できますか?もしそうなら、どのように 'aion'を 'a = tion'に分割し、そして最後にpro = nun = ci = a = tionを持つようにそのdicファイルを修正することができますか?あるいは、私はさらなる研究のために私をリソースに誘導できますか?もう一度ありがとうございます。 – Warren

    +0

    あなたは大歓迎です。私はあなたに告白する必要があります:ハイフネーションは何も分かりません。私はソースコードを掘り下げて、あなたの問題を解決するためにできる限り試しました。私は別の投稿を投稿することをお勧めし、私が引用したハイフンの著者の注目を集めようとしました。 – menjaraz

    1

    私はDelphiをインストールするのに便利ではありませんので、これをちょっと微調整する必要があるかもしれません。

    ハイフンコードを確認した後、間違って使用していると思われます。コンストラクタのパラメータは、言語または文字セットです。そして、「実行」の中で渡された文字列のハイフネーションされたバージョンを生成するために使用される

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

    か(自分のファイル名に基づいて、私はあなたがこの次のいずれかが必要だと思う)

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

    。「実行」新しい文字列を返す関数です。あなたはそれを呼び出していますが、その結果を何もしません。

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

    "NewStr"は "cor-rect"になります。

    "FillList"関数とプロシージャは、コードを正しく読み取れば、Executeされた最後の単語の可能なすべてのハイフネーションのリストを返します。

    +0

    ありがとうございます。あなたは正しいです、私は正しく使用していません。あなたのコードをテストしました。Filllistはリストを生成し、各行は1つのセパレータを示します。しかし、私は受け入れられた答えを分けることができません。 – Warren

    +0

    問題ありません。お役に立てて嬉しいです。ソリューションポイントを得るよりも、必要なものを手に入れることが重要です。さらに、menjarazはコンパイルしてテストすることができました。 ;) – JerseyMike

    関連する問題