PROFI에서 SUPERPROFI에 대한 모든 질문 - 1. - 페이지 14

 
Zhunko :

WinHttpConnect() 를 살펴보았습니다 . 멀티바이트 인코딩에 대한 구현이 없습니다.

쉘을 만들고 DLL로 변환할 수 있습니까?


아니다. DLL에서 필요하지 않습니다. 나는 이것이 옵션이라는 것을 이해하지만 어떻게 든 그렇지 않습니다 ...

예를 들어 wininet.dll을 사용하면 모든 것이 작동하고 모든 기능이 작동하며 Winhttp에는 어리석은 스토퍼가 있습니다 ...

Kernel32에서 GetLastError를 호출 할 수 있지만 mql4가 유해하고 매개변수가 다른 경우에도 같은 이름으로 함수를 만들 수 없는 경우...


그런데 컴퓨터에서 이 스크립트를 실행해 보셨습니까? 어쩌면 이것은 내 문제입니까?

 
sergeev :

아니다. DLL에서 필요하지 않습니다. 나는 이것이 옵션이라는 것을 이해하지만 어떻게 든 그렇지 않습니다 ...

예를 들어 wininet.dll을 사용하면 모든 것이 작동하고 모든 기능이 작동하며 Winhttp에는 어리석은 스토퍼가 있습니다 ...

Kernel32에서 GetLastError를 호출할 수 있지만 mql4가 유해하고 매개변수가 다른 경우에도 같은 이름으로 함수를 만들 수 없는 경우...


그런데 컴퓨터에서 이 스크립트를 실행해 보셨습니까? 어쩌면 이것은 내 문제입니까?

그리고 GetLastError_2 와 Kernel32 사이에 중간 dll을 삽입하시겠습니까? 그럼 작동하지 않을까요?
 
sergeev :

아니다. DLL에서 필요하지 않습니다. 나는 이것이 옵션이라는 것을 이해하지만 어떻게 든 그렇지 않습니다 ...

예를 들어 wininet.dll을 사용하면 모든 것이 작동하고 모든 기능이 작동하며 Winhttp에는 어리석은 스토퍼가 있습니다 ...

Kernel32에서 GetLastError를 호출할 수 있지만 mql4가 유해하고 매개변수가 다른 경우에도 같은 이름으로 함수를 만들 수 없는 경우...

GetLastError() 는 하위 수준 --> RtlGetLastWin32Error() 를 호출해야 합니다. 일누르는 당시 제안했다. 다음은 사용 예입니다.

WinHttpConnect()MQL4 에서 아무 것도 하지 않습니다.

 
Zhunko :


WinHttpConnect()MQL4 에서 아무 것도 하지 않습니다.

왜요? 부호없는 정수 때문에?
 

변환 을 시도할 수 있습니다.

시간이 된다면 예제를 만들어 보도록 하겠습니다. 그래서... 이 C++ 코드는 MQL4로 변환되어야 합니다.

         bool MultiByte2Unicode( const std :: string & mb, std ::wstring& un, UINT CodePage)
        {
                DWORD wideSize = ::MultiByteToWideChar(CodePage, 0 , (LPCSTR)mb.c_str(), - 1 , 0 , 0 );

                 if (wideSize != 0 )
                {
                        un.reserve(wideSize);
                         std :: vector <TCHAR> result(wideSize, _T( '\0' ));

                         bool bSucceeded = ( 0 != ::MultiByteToWideChar(CodePage, 0 , (LPCSTR)mb.c_str(), - 1 , &result[ 0 ], wideSize));
                         if (bSucceeded)
                        {
                                un = &result[ 0 ];
                        }

                         return bSucceeded;
                }

                 return false ;
        }
wstring은 int 배열로 대체되어야 하며 크기를 다시 계산할 때 이를 고려해야 합니다.
 
TheXpert :

변환 을 시도할 수 있습니다.

시간이 된다면 예제를 만들어 보도록 하겠습니다. 그래서... 이 C++ 코드는 MQL4로 변환되어야 합니다.

wstring은 int 배열로 대체되어야 하며 크기를 다시 계산할 때 이를 고려해야 합니다.

나는 그렇게 가지고있다 :

     inline std ::wstring AnsiToUnicode( const std :: string &sSourceA, // Строка для преобразования.
                                       const int          nCodePage) // Кодовая страница может быть одним из значений:
                                                                   //  CP_ACP         Системное умолчание Windows кодовых страниц ANSI.
                                                                           //  CP_OEMCP       Нынешняя система OEM кода страницы.
                                                                   //  CP_MACCP       Нынешняя система Macintosh код страницы.
                                                                   //  CP_SYMBOL      Символ кода страницы (42).
                                                                   //  CP_THREAD_ACP  Код Windows ANSI страницы для текущего потока. 
                                                                   //  CP_UTF7        UTF-7. Используйте это значение только тогда, когда вынужден от транспортного механизма 7-бит. Использование UTF-8 является предпочтительным.
     {                                                             //  CP_UTF8        UTF-8.
       int           nLength = 0 ;
       std ::wstring sStringW = L "" ;
       if (sSourceA.size() == 0 ) return (sStringW);
       if ((nLength = ::MultiByteToWideChar(nCodePage, 0 , sSourceA.c_str(), - 1 , NULL, 0 )) == 0 ) throw (_T( "Ошибка в функции \"Utils::StringSTL::AnsiToUnicode()\". В строке отсутствуют символы." ));
      sStringW.resize(nLength - 1 );
       if ((nLength = ::MultiByteToWideChar(nCodePage, 0 , sSourceA.c_str(), - 1 , LPWSTR(sStringW.c_str()), nLength)) == 0 ) throw (_T( "Ошибка в функции \"Utils::StringSTL::AnsiToUnicode()\". Строка не преобразована." ));
       return (sStringW);
           }
 
Zhunko :

나는 그렇게 가지고있다 :

EMNIP, 표준은 연속 메모리 블록에서 문자열의 위치를 보장하지 않으므로 &sStringW[0] 구성을 사용하는 것은 어렵습니다.

일반적으로 같은 계란. 하지만 저는 100% 표준입니다 :)

 
TheXpert :

EMNIP, 표준은 연속 메모리 블록에서 문자열의 위치를 보장하지 않으므로 &sStringW[0] 구성을 사용하는 것은 어렵습니다.

일반적으로 같은 계란. 하지만 저는 100% 표준입니다 :)

몰랐다...
 
Zhunko :
몰랐다...
글쎄, 소규모 구현의 경우 (아마도 모든 사람을 위해) 모든 것이 이것으로 순서대로 진행되는 것 같습니다. 나머지는 보증할 수 없습니다.
 
TheXpert :
글쎄, 소규모 구현의 경우 (아마도 모든 사람을 위해) 모든 것이 이것으로 순서대로 진행되는 것 같습니다. 나머지는 보증할 수 없습니다.
지금까지는 문제가 없었습니다. 내 코드를 표준으로 수정했습니다.