Ticaret fırsatlarını kaçırıyorsunuz:
- Ücretsiz ticaret uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Kayıt
Giriş yap
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Hesabınız yoksa, lütfen kaydolun
SRC Düzenlendi. 'W' sürümüne güncelledikten sonra sunucu dosyasını çağırmayla ilgili sorunlar devam ediyor. Baska öneri?
bende de aynı sorun var...
Benim sorunum writefile satırında... Sadece bir mektup gönderiyorum. GÜNCELLEME kelimesini göndermek istersem sadece U gönderilir ...
Kodumu Bay angevoyageur'a gönderiyorum . Haklıysam o bir moderatör. Eğer bana yardım ederse, sana gönderirim...
bende de aynı sorun var...
Benim sorunum writefile satırında... Sadece bir mektup gönderiyorum. GÜNCELLEME kelimesini göndermek istersem sadece U gönderilir ...
Kodumu Bay angevoyageur'a gönderiyorum . Haklıysam o bir moderatör. Eğer bana yardım ederse, sana gönderirim...
Bunun sorunlarınızı çözmek için bir değeri olup olmadığını bilmiyorum, ancak yeni MT4 yapısında dizelerin normal 8 bitlik ASCII/ANSII Karakterleri değil, 16 bit Geniş Unicode karakterler olduğunu unutmayın.
Geniş Unicode'daki ASCII karakterleri SIFIR baytlarla ayrılır ve ASCII/ANSI ile çalışan birçok işlev bir dizeyi SIFIR baytla (ASCIIZ) sonlandırdığından, genellikle yalnızca BİR karakteri işlerler. "writefile" durumunuz için az önce tanımladığınız bir davranış.
Bu nedenle, ASCII/ANSI'yi değil, Geniş Unicode'u işleyebilen ve değiştirebilen uygun işlevleri kullandığınızdan emin olun.
Teşekkürler Bay FMIC, haklı olduğunuzu düşünüyorum.
Test ediyorum ve sonuçları yazacağım.
Uygulama tarafım, vb.net'te şu koda sahibim:
Bu hat mt4'teki isimli boruyu çağırır ve mt4 onun için bir mesaj gönderir.
CallNamedPipeW olarak değiştirmeye çalışıyorum ama herhangi bir şey oluyor.
Bu yüzden ansi moduyla geri döndüm ve cbRead sonucunu okudum. Eğer mt4'te "123456" gönderecek metin varsa cbRead = 7'dir. Herhangi bir metin koyarım, uzunluk = 100 ise 101 alırım. Ancak UPDATE'deki gibi sadece ilk karakter okunur ve burada U ve cbRead = 7 olur.
Değeri cbRead'de almak için kullanıyorum
textInArray.length hiç = 257'dir. Dizim UPDATE ise 257 ve dizim UP ise 257'dir.
DÜZENLE:
Neden = 257 olduğunu biliyorum:
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)
CallNamedPipeW kullanırsam 2 hata numarasını alıyorum ERROR_FILE_NOT_FOUND
Herhangi bir başarı arkadaşlar. Ayrıca yeni MT4 build 600'de NamedPips iletişim sorununa takıldım. 'A'nın 'W' olarak değiştirilmesini test ettim ama çalışmıyor.
Bunun sorunlarınızı çözmek için bir değeri olup olmadığını bilmiyorum, ancak yeni MT4 yapısında dizelerin normal 8 bitlik ASCII/ANSII Karakterleri değil, 16 bit Geniş Unicode karakterler olduğunu unutmayın.
Geniş Unicode'daki ASCII karakterleri SIFIR baytlarla ayrılır ve ASCII/ANSI ile çalışan birçok işlev bir dizeyi SIFIR baytla (ASCIIZ) sonlandırdığından, genellikle yalnızca BİR karakteri işlerler. "writefile" durumunuz için az önce tanımladığınız bir davranış.
Bu nedenle, ASCII/ANSI'yi değil, Geniş Unicode'u işleyebilen ve değiştirebilen uygun işlevleri kullandığınızdan emin olun.