ZS : Je n'arrive pas à trouver un NS prêt à l'emploi en cherchant et en googlant, le .dll avec FANN fonctionne assez bien, mais j'aimerais qu'il fonctionne sans le .dll.
Avez-vous une idée de ce que vous voulez ? Pour porter du code OOP normalement écrit vers des NS sous-développés ? Je pense que personne ne le fera. D'autant plus qu'il sera plus rapide via .dll.
Il s'affiche correctement seulement si le TF du testeur est le même que le TF dans les paramètres de l'EA.
Pouvez-vous nous conseiller sur la manière de faire correctement son appel afin qu'il s'affiche correctement quel que soit le TF du testeur ? Ou cela ne peut pas être fait en raison des particularités du code de l'indicateur ?
64-разрядные выпуски Windows Server могут выполнять адресацию 16 терабайт виртуальной памяти с помощью плоской модели адресации. Виртуальная память разделяется на равные части между виртуальными адресными пространствами для приложений и операционной системы. Увеличение адресного пространства виртуальной памяти в 64-разрядной среде может благоприятно сказаться даже на работе 32-разрядных приложений. Например, хотя 32-разрядное приложение по-прежнему ограничено 4 ГБ виртуальной памяти, ему больше не требуется разделять это пространство с операционной системой. В результате возникает фактическое расширение виртуальной памяти.
Il s'avère que MT4 peut adresser jusqu'à 4GB de mémoire sous un OS 64-bit ?
Je ne peux pas le vérifier moi-même. Il n'y a nulle part où mettre autant de mémoire.
... Le système SCADA exécute une tâche en VB (ancien) pour envoyer des données à un socket. J'ai essayé de l'implémenter directement à partir de Vb au moyen de l'API, mais il y a un problème
Si la connexion au socket échoue, VB attend la réponse et ralentit quelque temps (c'est critique).
Je voulais essayer de créer un fil unique à partir de VB, mais il s'est avéré que VB ne comprend pas AddressOf.
Comment puis-je expliquer à VB d'attendre la réponse du socket distant par exemple 1 sec comme TTL pour ping'a (socket distant sur local) ?
J'ai essayé une autre méthode : sur C++ bilder, j'ai écrit une application console à envoyer au socket.
J'ai essayé de l'exécuter, ça marche.
J'ai ensuite essayé de créer un processus autonome à partir de VB. Le Runtime fonctionne mais n'envoie pas de données.
J'ai commencé à déboguer le processus et à mettre du cout<< <<endl partout où c'était possible ;
Je vois que lorsque j'invoque l'exe manuellement, WsaStartUp fonctionne avec 0 et se connecte à 0, envoie renvoie le nombre de données transférées
Mais quand je démarre avec VB, WsaStartUp fonctionne pour 0 et se connecte pour -1, envoie respectivement pour 10038.
Je ne sais pas ce qui ne va pas.
Voici le code de VB
Public Declare Function socket Lib "WSOCK32.DLL" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long
Public Declare Function send Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal Flags As Long) As Long
Public Declare Function connect Lib "wsock32" (ByVal socket As Long, addr As sockaddr, ByVal namelen As Long) As Long
Public Declare Function closesocket Lib "WSOCK32.DLL" (ByVal s As Long) As Long
Public Declare Function inet_addr Lib "wsock32" (ByVal cp As String) As Long
Public Declare Function htons Lib "ws2_32.dll" (ByVal hostshort As Long) As Integer
Public Declare Function WSAStartup Lib "ws2_32.dll" (ByVal wVR As Long, lpWSAD As WSA_Data) As Long
Public Declare Function WSACleanUp Lib "wsock32" Alias "WSACleanup" () As Long
Type sockaddr
sin_family As Integer
sin_port As Integer
sin_addr As Long
sin_zero As String * 8
End Type
Public Const WSADESCRIPTION_LEN = 257
Public Const WSASYS_STATUS_LEN = 129
Public Const WINSOCK_VERSION = 1
Public Type WSA_Data
wVersion As Integer
wHighVersion As Integer
szDescription As String * WSADESCRIPTION_LEN
szSystemStatus As String * WSASYS_STATUS_LEN
iMaxSockets As Integer
iMaxUdpDg As Integer
lpVendorInfo As Long
End Type
'===================================================================
Const INFINITE = &HFFFF
Const STARTF_USESHOWWINDOW = &H1
Public Const SW_NORMAL = 1
Private Type PROCESS_INFORMATION
hProcess As Long
hThread As Long
dwProcessId As Long
dwThreadId As Long
End Type
Private Type STARTUPINFO
cb As Long
lpReserved As String
lpDesktop As String
lpTitle As String
dwX As Long
dwY As Long
dwXSize As Long
dwYSize As Long
dwXCountChars As Long
dwYCountChars As Long
dwFillAttribute As Long
dwFlags As Long
wShowWindow As Integer
cbReserved2 As Integer
lpReserved2 As Byte
hStdInput As Long
hStdOutput As Long
hStdError As Long
End Type
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
Public Const NORMAL_PRIORITY_CLASS = &H20
Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As _
String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, _
lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags _
As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _
lpProcessInformation As PROCESS_INFORMATION) As Boolean
Private Declare Function GetLastError Lib "kernel32" () As Long
Public Function SuperShell(ByVal App As String, ByVal commandline) As Integer
Const CREATE_NO_WINDOW = &H8000000
Dim startProc As Boolean
Dim pclass As Long
Dim sinfo As STARTUPINFO
Dim pinfo As PROCESS_INFORMATION
'Not used, but needed
Dim sec1 As SECURITY_ATTRIBUTES
Dim sec2 As SECURITY_ATTRIBUTES
'Set the structure size
sec1.nLength = Len(sec1)
sec2.nLength = Len(sec2)
'sinfo.cb = Len(sinfo)
'Set the flags
'sinfo.dwFlags = STARTF_USESHOWWINDOW
'Set the window's startup position
'sinfo.wShowWindow = start_size
'Set the priority class
'pclass = Priority_Class
'Start the program CREATE_NO_WINDOW
startProc = CreateProcess("e:\\project1.exe", commandline, sec1, sec2, False, 0, 0&, "e:\", sinfo, pinfo)
End Function
Public Sub testdll()
Dim str
str = "srwevbwert4th"
modSocket.SuperShell "e:\\Project1.exe", str
End Sub
Comment trouver le code d'erreur système (GetLastError) sans avoir sa propre dll ? Je pense l'avoir vu, mais je ne le trouve pas. Je me souviens qu'il semble importer une autre fonction, je ne me souviens plus laquelle.
ZS : Je n'arrive pas à trouver un NS prêt à l'emploi en cherchant et en googlant, le .dll avec FANN fonctionne assez bien, mais j'aimerais qu'il fonctionne sans le .dll.
Avez-vous une idée de ce que vous voulez ? Pour porter du code OOP normalement écrit vers des NS sous-développés ? Je pense que personne ne le fera. D'autant plus qu'il sera plus rapide via .dll.
Demandez-le sur la 5, ils y ont déjà bégayé.
Camarades, je suis tombé sur un indicateur qui s'appelle lui-même, voici une partie du code (l'indicateur lui-même est dans le trailer) :
Le testeur ne parvient pas à l'appeler correctement en utilisant iCustom() depuis l'Expert Advisor. Voilà ce que nous obtenons :

iCustom() de celui-ci dans l'Expert Advisor ressemble à ceci :
Il s'affiche correctement seulement si le TF du testeur est le même que le TF dans les paramètres de l'EA.
Pouvez-vous nous conseiller sur la manière de faire correctement son appel afin qu'il s'affiche correctement quel que soit le TF du testeur ?
Ou cela ne peut pas être fait en raison des particularités du code de l'indicateur ?
Lire un article de Microsoft : http://technet.microsoft.com/ru-ru/library/dd630755(v=office.12).aspx
En voici un extrait :
64-разрядные выпуски Windows Server могут выполнять адресацию 16 терабайт виртуальной памяти с помощью плоской модели адресации. Виртуальная память разделяется на равные части между виртуальными адресными пространствами для приложений и операционной системы. Увеличение адресного пространства виртуальной памяти в 64-разрядной среде может благоприятно сказаться даже на работе 32-разрядных приложений. Например, хотя 32-разрядное приложение по-прежнему ограничено 4 ГБ виртуальной памяти, ему больше не требуется разделять это пространство с операционной системой. В результате возникает фактическое расширение виртуальной памяти.
Il s'avère que MT4 peut adresser jusqu'à 4GB de mémoire sous un OS 64-bit ?
Je ne peux pas le vérifier moi-même. Il n'y a nulle part où mettre autant de mémoire.
Bonjour
Question sur les prises de courant.
... Le système SCADA exécute une tâche en VB (ancien) pour envoyer des données à un socket. J'ai essayé de l'implémenter directement à partir de Vb au moyen de l'API, mais il y a un problème
Si la connexion au socket échoue, VB attend la réponse et ralentit quelque temps (c'est critique).
Je voulais essayer de créer un fil unique à partir de VB, mais il s'est avéré que VB ne comprend pas AddressOf.
Comment puis-je expliquer à VB d'attendre la réponse du socket distant par exemple 1 sec comme TTL pour ping'a (socket distant sur local) ?
J'ai essayé une autre méthode : sur C++ bilder, j'ai écrit une application console à envoyer au socket.
J'ai essayé de l'exécuter, ça marche.
J'ai ensuite essayé de créer un processus autonome à partir de VB. Le Runtime fonctionne mais n'envoie pas de données.
J'ai commencé à déboguer le processus et à mettre du cout<< <<endl partout où c'était possible ;
Je vois que lorsque j'invoque l'exe manuellement, WsaStartUp fonctionne avec 0 et se connecte à 0, envoie renvoie le nombre de données transférées
Mais quand je démarre avec VB, WsaStartUp fonctionne pour 0 et se connecte pour -1, envoie respectivement pour 10038.
Je ne sais pas ce qui ne va pas.
Voici le code de VB
Public Declare Function socket Lib "WSOCK32.DLL" (ByVal af As Long, ByVal s_type As Long, ByVal protocol As Long) As Long Public Declare Function send Lib "WSOCK32.DLL" (ByVal s As Long, buf As Any, ByVal buflen As Long, ByVal Flags As Long) As Long Public Declare Function connect Lib "wsock32" (ByVal socket As Long, addr As sockaddr, ByVal namelen As Long) As Long Public Declare Function closesocket Lib "WSOCK32.DLL" (ByVal s As Long) As Long Public Declare Function inet_addr Lib "wsock32" (ByVal cp As String) As Long Public Declare Function htons Lib "ws2_32.dll" (ByVal hostshort As Long) As Integer Public Declare Function WSAStartup Lib "ws2_32.dll" (ByVal wVR As Long, lpWSAD As WSA_Data) As Long Public Declare Function WSACleanUp Lib "wsock32" Alias "WSACleanup" () As Long Type sockaddr sin_family As Integer sin_port As Integer sin_addr As Long sin_zero As String * 8 End Type Public Const WSADESCRIPTION_LEN = 257 Public Const WSASYS_STATUS_LEN = 129 Public Const WINSOCK_VERSION = 1 Public Type WSA_Data wVersion As Integer wHighVersion As Integer szDescription As String * WSADESCRIPTION_LEN szSystemStatus As String * WSASYS_STATUS_LEN iMaxSockets As Integer iMaxUdpDg As Integer lpVendorInfo As Long End Type '=================================================================== Const INFINITE = &HFFFF Const STARTF_USESHOWWINDOW = &H1 Public Const SW_NORMAL = 1 Private Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadId As Long End Type Private Type STARTUPINFO cb As Long lpReserved As String lpDesktop As String lpTitle As String dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Byte hStdInput As Long hStdOutput As Long hStdError As Long End Type Private Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type Public Const NORMAL_PRIORITY_CLASS = &H20 Private Declare Function CreateProcess Lib "kernel32" Alias "CreateProcessA" (ByVal lpApplicationName As _ String, ByVal lpCommandLine As String, lpProcessAttributes As SECURITY_ATTRIBUTES, _ lpThreadAttributes As SECURITY_ATTRIBUTES, ByVal bInheritHandles As Long, ByVal dwCreationFlags _ As Long, lpEnvironment As Any, ByVal lpCurrentDriectory As String, lpStartupInfo As STARTUPINFO, _ lpProcessInformation As PROCESS_INFORMATION) As Boolean Private Declare Function GetLastError Lib "kernel32" () As Long Public Function SuperShell(ByVal App As String, ByVal commandline) As Integer Const CREATE_NO_WINDOW = &H8000000 Dim startProc As Boolean Dim pclass As Long Dim sinfo As STARTUPINFO Dim pinfo As PROCESS_INFORMATION 'Not used, but needed Dim sec1 As SECURITY_ATTRIBUTES Dim sec2 As SECURITY_ATTRIBUTES 'Set the structure size sec1.nLength = Len(sec1) sec2.nLength = Len(sec2) 'sinfo.cb = Len(sinfo) 'Set the flags 'sinfo.dwFlags = STARTF_USESHOWWINDOW 'Set the window's startup position 'sinfo.wShowWindow = start_size 'Set the priority class 'pclass = Priority_Class 'Start the program CREATE_NO_WINDOW startProc = CreateProcess("e:\\project1.exe", commandline, sec1, sec2, False, 0, 0&, "e:\", sinfo, pinfo) End FunctionBonjour
Pourquoi ce fichier historique n'apparaît-il pas sur le graphique dans MT ?
Il est nécessaire de connaître la taille des informations textuelles transmises, dans une DLL. Disons qu'en MKL5, cela se fait par sizeof().
Serait-il correct de le faire en MKL4 via StringLen() ? Comment cela pourrait-il être correct ?
p.s. intéressé par l'envoi du troisième paramètre ici: http://msdn.microsoft.com/en-us/library/aa365747(v=vs.85).aspx
Il est nécessaire de connaître la taille des informations textuelles transmises, dans une DLL. Disons qu'en MKL5, cela se fait par sizeof().
Serait-il correct de le faire en MKL4 via StringLen() ? Comment cela pourrait-il être correct ?
p.s. intéressé par l'envoi du troisième paramètre ici: http://msdn.microsoft.com/en-us/library/aa365747(v=vs.85).aspx