MetaTrader掲示板

アップロード可能ファイル拡張子:gif, jpg, png, txt, swf, jpeg, xls, zip, cab,tpl,mq4,ex4,mq5,ex5
一度にアップロード可能な最大サイズ :合計200KB
  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃MetaTraderまとめWiki  
24 / 270 ツリー  ←次へ | 前へ→

【725】カスタムインジケーターとDLL(WINAPI)とのプロセス間通信について ひろロン a113i32
【727】Re:カスタムインジケーターとDLL(WINAPI)との... [名前なし] a204i29

【725】カスタムインジケーターとDLL(WINAPI)との...
  ひろロン  - a113i32 -

   MT4のカスタムインジケーターからDLL(WIN32APIで作成)への【文字列渡し】が上手く行かず悩んでおります。

カスタムインジケーター側のプログラムは↓↓↓

〜〜〜〜初期設定省略〜〜〜〜

#import "MenoNoteOut.dll"
int  MenoNoteOut(string);
#import

int init()
 {
  return(0);
 }

int start()
 {

 int TEMP = MenoNoteOut(DoubleToStr(Bid ,5));

  return(0);
 }

※ もちろんこれをコンパイルしてMT4に搭載しても何も起こりません。


DLL側(WIN32API)↓↓↓

#include <windows.h>
#include <stdlib.h>
#include <stdio.h>

__declspec(dllexport) int __stdcall MenoNoteOut(LPCSTR str){

 MessageBox(NULL , str , "" , MB_OK);

 return 0;
}


コンパイルエラーなども無くDLL化し、他のアプリをメインにプロセス間文字列渡しを行うと
特に問題なく文字列が表示されます。(VB2008で検証)


ところが、MT4で↑のインジケーターを搭載しTickが進むと
メッセージが表示されますが肝心の【文字列】が先頭の一文字しか表示されません(渡されていません)
例えば「EUR/USD」をチャートに表示し、DLLをライブラリーに入れインジケーターを載せると

EUR/USDの最近値 ⇒ 1.*****ですが表示では「1」としか表示されません。
(たぶんこの”1”は初値(最左側)だと思いますが・・・?)

ちなみにインジケーター内の文字出力部「DoubleToStr(Bid ,5)」を”9999”などにすると
”9”が表示されましたので、やはり初値(最左側)のことだと思いますが・・・?


「レート値を表示したいなら文字列ではなく整数・実数では?」っと
思われるかも分かりませんが、整数・実数(int・double)の受け渡しは上手く行きますが
いずれ「ファイル名」等も渡したいので文字列でないと困ります。

どうかインジケーターやAPIにお詳しい方!
宜しくご教授をお願い致します。
引用なし
パスワード

【727】Re:カスタムインジケーターとDLL(WINAPI)と...
  [名前なし]  - a204i29 -

   先頭の1文字分だけの容量を渡している感じ何じゃないですかね
参照で渡せばDLL側でアドレスを引き継げるので問題ないと思います
引用なし
パスワード

  新規投稿 ┃ツリー表示 ┃スレッド表示 ┃一覧表示 ┃トピック表示 ┃検索 ┃設定 ┃MetaTraderまとめWiki  
24 / 270 ツリー  ←次へ | 前へ→
ページ:  ┃  記事番号:   
(SS)C-BOARD v3.8 is Free
掲示板運営ポリシー:MetaTraderに関する情報を交換するための掲示板です。議論の範囲を超えた根拠無き誹謗中傷、荒らし、犯罪予告等、
公序良俗に反する書き込みについては、速攻削除のうえ、関係機関に通報します。
情報源のページなどがあれば、そこへのリンクを直接張って頂けると大変ありがたいです。
投稿情報の信頼性向上の為にも、ご協力頂ければ幸いです。

Google