« ブログ目次作成ソフト Blomoku 0.1.0 | メイン | Windows用Rubyいろいろ »

BDS2006(C++Builder)からRubyを使う(2)

前回の続き

メソッドの実行結果を受け取り、結果を表示します。

フォームにメモとボタンをを貼り付けます。

Unit1.h の private に次のメソッドを追加します。

__declspec(dllexport) char* (*rb_string_value_cstr)(volatile unsigned long*);

Unit1.cpp の TForm1::TForm1(TComponent* Owner) に次の行を追加します。

rb_string_value_cstr = (char* (*)(volatile unsigned long*))GetProcAddress(hDll,"rb_string_value_cstr");

ボタンのイベントを追加します。

void __fastcall TForm1::Button3Click(TObject *Sender)
{
  if (!hDll)
  {
    Application->MessageBox("msvcrt-ruby18.dll が見つかりませんでした。",
                            "DLL エラー",
                            MB_ICONSTOP | MB_OK);
    return;
  }
  //Rubyインタプリタの初期化
  ruby_init();

  //スクリプトの実行
  unsigned long value = rb_eval_string("'実行結果'");
  //実行結果の文字列を取得する
  AnsiString result = rb_string_value_cstr(&value);
  Memo1->Lines->Add(result);

  //スクリプトの実行
  value = rb_eval_string("File.open('test.rb', 'r' ).read");

  //実行結果の文字列を取得する
  TStringList* list = new TStringList();
  list->Text = rb_string_value_cstr(&value);
  Memo1->Lines->Add(list->Text);
  delete list;

  //Rubyインタプリタのクリーンアップ
  ruby_cleanup(0);

}

ボタンをクリックして、メモに「実行結果」と「test.rb」の内容が表示されたら成功です。

トラックバック

このエントリーのトラックバックURL:
http://www.gesource.jp/mt/mt-tb.cgi/120

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

About

2006年08月16日 16:51に投稿されたエントリーのページです。

ひとつ前の投稿は「ブログ目次作成ソフト Blomoku 0.1.0」です。

次の投稿は「Windows用Rubyいろいろ」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35