Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
SRC Bearbeitet. Ich habe immer noch Probleme mit dem Aufrufen der Serverdatei nach der Aktualisierung auf 'W'. Irgendwelche Vorschläge?
Ich habe das gleiche Problem...
Ich denke, dass mein Problem in der Zeile writefile liegt...ich sende nur einen Buchstaben. Wenn ich das Wort UPDATE senden möchte, wird nur das U gesendet...
Ich schicke meinen Code an den Herrn angevoyageur. Er ist ein Moderator, wenn ich richtig liege. Wenn er mir hilft, sende ich an Sie...
Ich habe das gleiche Problem...
Ich denke, dass mein Problem in der Zeile writefile liegt...ich sende nur einen Buchstaben. Wenn ich das Wort UPDATE senden möchte, wird nur das U gesendet...
Ich schicke meinen Code an den Herrn angevoyageur. Er ist ein Moderator, wenn ich richtig liege. Wenn er mir hilft, sende ich an Sie...
Ich weiß nicht, ob dies einen Wert hat, um Ihre Probleme zu lösen oder nicht, aber denken Sie daran, dass in der neuen MT4-Build, Strings sind 16bit Wide Unicode-Zeichen, nicht die üblichen 8-Bit-ASCII/ANSII-Zeichen.
ASCII-Zeichen in Wide Unicode sind durch NULL-Bytes getrennt, und da viele Funktionen, die mit ASCII/ANSI arbeiten, einen String mit einem NULL-Byte (ASCIIZ) abschließen, werden sie normalerweise nur EIN Zeichen verarbeiten. Ein Verhalten, das Sie gerade für Ihren "writefile"-Fall beschrieben haben.
Stellen Sie also sicher, dass Sie die entsprechenden Funktionen verwenden, die Wide Unicode und nicht ASCII/ANSI verarbeiten können.
Danke Sir FMIC, ich denke, Sie haben Recht.
Ich teste und ich werde die Ergebnisse posten.
Ich meine app-Seite, in vb.net habe ich diesen Code:
Diese Zeile ruft die namedpipe in mt4 auf und mt4 sendet eine Nachricht für ihn.
Ich versuche, auf CallNamedPipeW zu wechseln, aber es passiert nichts.
Also gehe ich zurück in den Ansi-Modus und lese das cbRead-Ergebnis. Wenn ich in mt4 den Text "123456" sende ,ist das cbRead = 7. Ich gebe einen beliebigen Text ein, wenn length = 100 erhalte ich 101. Aber nur das erste Zeichen wird gelesen, wie in UPDATE, wo ich U und cbRead = 7erhalte .
Um den Wert in cbRead zu erhalten, verwende ich ihn
die textInArray.length ist immer = 257. Wenn mein String UPDATE ist 257 und wenn mein String UP ist 257.
EDIT:
Ich weiß, warum ist = 257:
Dim res As Integer = 0 Dim cbRead As Integer Dim textInLength As Integer Dim textOut() As Byte Dim textIn As String Dim textInArray() As Byte Message_To_MT4 = Comando 'La no script mql ele vai analisar o comando e nos responder. Abaixo, ele envia o comando e lê a resposta. textOut = System.Text.Encoding.Default.GetBytes(Message_To_MT4) textInLength = 256 ReDim textInArray(textInLength) Do 'Wait for a connection, block until a client connects 'Dim exists As Boolean = WaitNamedPipe(szPipeName, NMPWAIT_WAIT_FOREVER) Try res = CallNamedPipeA(szPipeName, textOut(0), Message_To_MT4.Length + 1, textInArray(0), textInLength, cbRead, PIPE_NOWAIT) Catch ex As Exception MsgBox(Err.LastDllError.ToString) End Try If Err.LastDllError = 231 Then Thread.Sleep(1000) Envia_APP_TO_MT4(Comando) Exit Sub End If If res = 0 Then Debug.Print(Err.LastDllError) 'significa que deu erro Server_PIPE.Text = "MT4 Server PIPE" Server_PIPE.Icon = New Icon("D:\ProgressError.ico") Else 'Conexão estabelecida 'string from MT4 = UPDATE textIn = "" MsgBox(cbRead.toString) '=7 MsgBox(textInArray.Length) '=257 For i = 0 To cbRead - 1 textIn = textIn & Chr(textInArray(i)) Next i MsgBox(textIn)
Wenn ich CallNamedPipeW verwende, erhalte ich die Fehlernummer 2 ERROR_FILE_NOT_FOUND
Jeder Erfolg Freunde. Mich auch stecken mit NamedPips Kommunikation Problem auf neue MT4 build 600. Ich habe für die Änderung von 'A' zu 'W' getestet, aber nicht funktioniert.
Ich weiß nicht, ob dies zur Lösung Ihrer Probleme beiträgt oder nicht, aber denken Sie daran, dass Strings im neuen MT4-Build 16-Bit Wide Unicode-Zeichen sind und nicht die üblichen 8-Bit-ASCII/ANSII-Zeichen.
ASCII-Zeichen in Wide Unicode werden durch NULL-Bytes getrennt, und da viele Funktionen, die mit ASCII/ANSI arbeiten, eine Zeichenkette mit einem NULL-Byte (ASCIIZ) abschließen, verarbeiten sie normalerweise nur EIN Zeichen. Ein Verhalten, das Sie gerade für Ihren "writefile"-Fall beschrieben haben.
Stellen Sie also sicher, dass Sie die entsprechenden Funktionen verwenden, die Wide Unicode und nicht ASCII/ANSI verarbeiten können.