Wizard In The Market
システムトレードの魔術師

*

MQLでのWindowMessageText使用時にstring型がバグる

公開日: : 最終更新日:2015/01/13 その他

昨日、ひたすら困ってました・・・orz
バグが発生していたソースは下記の通りです。

最後のPrint2つの動作なのですが、本来であれば
[ windowのタイトル ]
[ 空白 ]
と表示されるはずなのですが、
[ windowのタイトル ]
[ windowのタイトル ]
と表示されてしまうのです・・・。
MQLでは、外部関数を呼び出しての参照渡しでちゃんと動かないことが多いのは
DLL作成しているときに確認したので、GetWindowTextAの第二引数が
ポインタで指定できないことが原因だというのは推測がつくのですが、
手の打ちようがありませんでした(||||▽ )
こういうときは、困ったときのfaiさん。
英語系のサイトも当たってみましたが、良答はなかったです><
以前、Demo口座とアカウントをMQL言語を使わないで使用できるようにしていた時に、
GetWindowTextを使用していたのを思い出しました。

昨日の続き。。。

やはり、ココに答えがありました。
注目したのはここ。

空白がいっぱい。
80個空白があります。
こうやって、あらかじめgwstrにメモリを割り当てておく必要があったんですね・・・。
そうしないと、メモリの割り当てがずれてしまって正常に動作しないようです。
このあたりの知識は目下勉強中なので、詳しい考察は今後していきます。。。
誰かのご参考になれば幸いです・・・。
お読みくださり、ありがとうございます。

にほんブログ村 為替ブログへ 
Fx-Kirin

About Fx-Kirin

2009年10月にFXを開始、翌年2010年5月から脱サラをしてFX業界に専念。 2012年10月頃から本格的に勝ち始め、一月で資産を倍にする、2年半月間負けなし等、安定した収支で2013年11月に生涯FX収支が1億を超える。 投資スタイルはシステムトレード。プログラミングの知識がほぼない状態から、独学で自分がしたいと思うことであればほぼ実現することが可能なレベルまで成長。好きな言語はRuby, Python。必要となればC++からVBA、Pascal等なんでも行う。MT4/MT5のプログラミングも得意。 2011年にはFXで稼いだ資金をもとにシンガポールに移住し、留学も兼ねて起業をチャレンジするほど、ビジネスを興すことに熱意がある。国内の業者を主に使い始めたことから、2012年に帰国。零細株式会社経営中。

Adsense

  • このエントリーをはてなブックマークに追加
  • Pocket
  • 67 follow us in feedly

関連記事

初ブログ

かれこれ、長年FXをやっていますが、ドローダウンの激しさから他の収入源を作るべくブログを始めることにしました。 私の持っ

記事を読む

no image

招きねこさんによる無料EA配布!

こんばんは!キリンです。 今日は、私の親友の招きねこさんを紹介させていただこうと思います。 招き猫さんはブログで自らの手

記事を読む

no image

EAで取得したポジションの手動決済の際の注意

こんばんは。キリンです。 私どものEAに限らず、EAによるポジションを手動で決済すると 即別の注文が入ってしまうことが多

記事を読む

no image

Java Access Bridgeライブラリ

http://docs.oracle.com/javase/7/docs/technotes/guides/acces

記事を読む

no image

【β版】裁量トレード検証ツール TradeTester公開

こんにちは。キリンです。 今日はかなり便利なソフトウェアの公開をします。 裁量のバックテストには打ってつけです。 (正直

記事を読む

no image

最小二乗法を用いたTrendLine Indicator

こんばんは。 昨日作ったiMAを利用したEAなのですが、 移動平均線の傾向から、 トレンドには強いということが判明しまし

記事を読む

no image

デバッグ時に特定のメソッドが呼び出された時のそのメソッドの場所を調べる。

module function Kernel.#set_trace_funcは超便利。http://doc.okke

記事を読む

no image

今日は門出の日!

こんばんは。キリンです。 まず、非常に個人的な日記になることをお詫びさせていただきます。 今日は僕にとって区切りの日なん

記事を読む

no image

Add Alert and SendMailの改造

おはようございます。キリンです。 最近22時に寝ているので朝が早いです。 では、本題。先日公開した、 任意のインジ

記事を読む

no image

【日記】ブログの方向性

こんばんは。キリンです。 超直感!プログラミング口座も、気づいたらEA製作までこぎつけて来れまして、 それほど初心者向け

記事を読む

Comment

  1. 詠み人しらず より:

    SECRET: 0
    PASS:
    APIの意味から考えると
    GetWindowTextA(hwnd, gwstr, StringLen(gwstr));
    とするのが正しかったのです。
    MQ4に限らず、可変長Stringを採用している言語(VB等)からAPIを呼び出す時のおきまり事ですので、覚えておいて損はないかと思います。

  2. SECRET: 0
    PASS:
    >詠み人しらずさん
    おお!なるほど!
    char型でそういう概念が必要だとは知っていたのですが、string型でも必要になるのですね><
    とても勉強になりました!
    ありがとうございますm(__)m

  3. 詠み人しらず より:

    SECRET: 0
    PASS:
    ちょと書き方が不親切だったので、補足。
    可変長のstringをサポートしているMQL4から固定長(?)のstringしかサポートしていないAPIを呼ぶときは事前にstring領域の確保は必須です。
    そして、APIに確保した領域の長さを教える必要があります。(これが3つめの引数)
    ここに数値を直接書き入れると、確保した領域と食い違った場合、予期せぬ結果となり悩むことになるので、StringLenで確実に正しい長さを教えてあげるのがいいと思います。
    はじめの例だと StringLenは0になるので、それほど悩まずに、間違いに気づいたのかなと思います。

  4. SECRET: 0
    PASS:
    >詠み人しらずさん
    なるほど。文字数を指定する必要があるのは、
    固定長だったからなのですね。
    非常に勉強になりました。
    本当にありがとうございますm(__)m

本気のFX部長! Kirin@FTL にコメントする コメントをキャンセル

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Adsense

Fixing kernel error AMD-Vi: Event logged IO_PAGE_FAULT on Ryzen Machine

My pc was periodically shut down on 7:40 am JS

Ubuntu で仮想ディスプレイを使う

雑多な備忘録ですが、せっかくなので残しておきます。 Ubuntu 18.04 の resolv.c

PYPIへの登録を10秒でできるようになる方法

pip 使ってますよね Pythonを使っている人であれば、pip installでライブラリ

The art of debugging with GDB, DDD, and Eclipse の読書メモ

GDBの勉強がしたくて、下の本を原著で読んでみました。10年前の本だけど全然現役でした。

JupyterでボタンからJavascriptを実行して追加のアウトプットをさせない方法

Javascriptを実行するとアウトプットセルの行が増える これがとても面倒だった。上の

→もっと見る

PAGE TOP ↑