アップデート MQL4 600 & ネイムドパイプ - ページ 3

 

OK, if I problem when I change to the mode W unicode is to connect the pipe in side MT4, so I thing that the string \gucci.\pipe no more a simple string but contain thenull values like de FMIC said.So is why I cant connect in my vb.net side because I use the same string\.\pipe is not found and I receive the error 2. 私がvb.net側で同じ文字列を使用するとき、私はエラー2が 表示されます。

StringToCharArrayで文字列を変換して接続しようとすると、パイプ接続がエラーになります。

Make sense?Thanks

 
mt4側でAnsiモードで使用すると、vb.net側でも接続されないのですが、接続されました。
 

私はこのラインコードを使って、開いているすべてのパイプを表示しています。

Dim listOfPipes As [String]() = System.IO.Directory.GetFiles("\.pipe")

で、私のパイプはそこにあります。つまり、Unicodeモード "W "のmt4がパイプを作成し、接続を待っているのです。同じmt4側でパイプのクライアントを作れば...

 
どうしたらいいんだろう...。
 
bisewski:
どうしたらいいのかわからない...。
状況がよくわからないと思うので、まとめて投稿してもらえますか?
 

私のvb.net側に問題があるようなので、msdnフォーラムに投稿を開きました。

http://social.msdn.microsoft.com/Forums/en-US/409d4a2d-0a88-4094-9f0c-403798a2ce3d/pipe-unicode-mode-not-connecting-like-ansi-mode?forum=vbgeneral

mt4のコードでパイプを作成することはできますが、接続したり、呼び出したりすることはできません。

vb.netのプログラムでansiモードを使用すると、パイプを接続することはできますが、最初の文字しか受信しません。そこで、ユニコードモードに変更したところ、接続できないことがわかりました...エラー2が表示されるのです。

私の問題は、私のvb.netのコードにあり、私のmql4のモードではないことです。

すべてのヘルパーに感謝します...

 

MT4 v600で名前付きパイプの 管理にまだ問題がある人がいたら、私が解決した方法を紹介します。

  • CreateNamedPipeAとCreateFileAをCreateNamedPipeWとCreateFileWに変更する。
  • ReadFileとWriteFile(Buffer)の宣言を変更し、CharArrays(1文字あたり1バイト)を使用できるようにしました。
int WriteFile(int FileHandle, uchar & Buffer[], int BufferLength, int & BytesWritten[], int PassAsZero);

int ReadFile(int FileHandle, uchar & BufferPtr[], int BufferLength, int & BytesRead[], int PassAsZero);

  • サーバーとクライアントの通信にCharArraysを使用する。

サーバー

string ReadBuffer = "";
uchar Buff_in[200];
int BytesRead[1] = {0};
ReadFile(glbPipe[PipeIndex], Buff_in, 200, BytesRead, 0);
ReadBuffer = CharArrayToString(Buff_in,0,BytesRead[0]);
if (BytesRead[0] > 0) {
   strReturnValue = StringConcatenate(strReturnValue, ReadBuffer);   
   TotalBytesRead += BytesRead[0];
} 

クライアント

uchar Mess_char[];
StringToCharArray(Message, Mess_char,0);
WriteFile(PipeHandle, Mess_char, StringLen(Message), BytesWritten, 0);
 

オスカリンさん、まとめありがとうございます。

 
ありがとうsr...
 
oscarin:

MT4 v600で名前付きパイプの管理にまだ問題がある人がいたら、私が解決した方法を紹介します。

  • CreateNamedPipeAとCreateFileAをCreateNamedPipeWとCreateFileWに変更する。
  • ReadFileとWriteFile(Buffer)の宣言を変更し、CharArrays(1文字あたり1バイト)を使用できるようにしました。

  • サーバーとクライアントの通信にCharArraysを使用する。

サーバー

クライアント


どのようなコードで示された変更を行いましたか?

誰かこれを知っていますか?

私はMT4 600+でnamed pipsを使い始めたいのですが、まだ解決策を見つけることができません。どのようなヘルプでも大歓迎です