Update MQL4 600 & Benannte Rohre - Seite 3

 

Ok, wenn mein Problem, wenn ich in den Modus W unicode ändern ist, um das Rohr in Seite MT4 zu verbinden, so dass ich Sache, dass die Zeichenfolge \\\\.\\pipe\mypipe nicht mehr eine einfache Zeichenfolge, aber enthalten die Null-Werte wie de FMIC sagte. So ist, warum ich nicht in meinem vb.net Seite verbinden, weil, wenn ich die gleiche Zeichenfolge \\\\.\\pipe\mypipe ist nicht gefunden und ich erhalte den Fehler 2.

Ich versuche zu verbinden, konvertieren Sie die Zeichenfolge mit dem StringToCharArray, aber das Rohr verbinden bekam Fehler.

Macht das Sinn? Danke

 
Hmm, ich bin falsch, natürlich... sonst, wenn ich in mt4 Seite mit A ansi-Modus meine vb.net Seite auch nicht verbinden, aber es tun...
 

Ich verwende diese Codezeile, um mir alle geöffneten Pipes anzuzeigen.

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

und meine Pipe ist da. Also mt4 mit Unicode-Modus "W" erstellen die Pipe und warten auf Verbindungen. Wenn ich auf der gleichen mt4-Seite einen Pipe-Client erstellen kann, kann ich testen...

 
Ich weiß nicht, was ich tun soll...
 
bisewski:
Ich weiß nicht, was ich tun soll...
Können Sie eine Zusammenfassung Ihrer Situation posten, da es nicht sehr klar ist, denke ich.
 

Ich öffne einen Beitrag in msdn Forum, weil ich denke, dass das Problem in meinem vb.net Seite ist.

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

Ich kann die Pipe mit meinem mt4-Code erstellen, aber ich kann sie nicht verbinden oder aufrufen.

Wenn ich den Ansi-Modus in meinem vb.net-Programm verwende, kann ich die Pipe verbinden, aber ich erhalte nur den ersten Buchstaben. Also wechsle ich in den Unicode-Modus und weiß, dass ich keine Verbindung herstellen kann... ich erhalte den Fehler 2.

Ich denke also, dass mein Problem jetzt mit meinem vb.net-Code und nicht mit meinem mql4-Modus liegt.

Danke für alle Helfer...

 

Falls jemand immer noch Probleme mit der Verwaltung von Named Pipes in MT4 v600 hat, habe ich das Problem folgendermaßen gelöst:

  • Ersetzen von CreateNamedPipeA und CreateFileA durch CreateNamedPipeW und CreateFileW
  • Ändern der Deklarationen in ReadFile und WriteFile (Buffer), so dass ich mit CharArrays (1 Byte pro Zeichen) arbeiten kann:
int WriteFile(int FileHandle, uchar & Buffer[], int BufferLength, int & BytesWritten[], int PassAsZero);

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

  • Verwendung von Char-Arrays für die Kommunikation zwischen Server und Client:

Server:

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];
} 

Client:

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

Vielen Dank, Oscarin, für Ihre Zusammenfassung.

 
Danke sr...
 
oscarin:

Falls jemand immer noch Probleme mit der Verwaltung von Named Pipes in MT4 v600 hat, habe ich das Problem folgendermaßen gelöst:

  • Ersetzen von CreateNamedPipeA und CreateFileA durch CreateNamedPipeW und CreateFileW
  • Ändern der Deklarationen in ReadFile und WriteFile (Buffer), so dass ich mit CharArrays (1 Byte pro Zeichen) arbeiten kann:

  • Verwendung von Char-Arrays für die Kommunikation zwischen Server und Client:

Server:

Client:


In welchem Code haben Sie die angegebenen Änderungen vorgenommen?

Kennt das jemand?

Ich bin begierig darauf, mit benannten Pips in MT4 600+ zu arbeiten, obwohl ich noch keine funktionierende Lösung gefunden habe. Jede Hilfe wird sehr geschätzt!