从专业人员到超级专业人员的任何问题 - 1。 - 页 15

 
TheXpert:

你可以尝试转换

如果我有时间,我将尝试做一个例子。否则...这个C++代码应该被转换为MQL4。

wstring应该被替换成一个ints数组,在重新计算大小时应该考虑到这一点。
它需要被转换为WORD。它是2字节,INT是4字节。也就是说,我们将不得不把两个人物放到一个INT中。高2个字节(第一个)+低2个字节(第二个)。
 
Zhunko:
毕竟,它必须是WORD语言。它是2字节,INT是4字节。就是说,一个INT必须包含两个字符。高2个字节(第一个)+低2个字节(第二个)。
是的,这就是我在谈论规模会计时的意思。
 

你应该试试。也许直接使用MultiByteToWideChar() 函数时不会有问题。

要把它滑成一个INT阵列。无论如何,它是通过参考。这有什么区别 - 它有什么类型?它不是由类型而是由字节来填充的。

同时将其传递给WinHttpConnect()

 
Zhunko:

你应该试试。也许直接使用MultiByteToWideChar() 函数时不会有问题。

要把它滑成一个INT阵列。无论如何,它是通过参考。这有什么区别 - 它有什么类型?它不是由类型而是由字节来填充的。

同时将其传递给WinHttpConnect()

做出了一个检查

#import "kernel32.dll"
   int MultiByteToWideChar(int CodePage, int dwFlags,
                           string lpMultiByteStr, int cbMultiByte, int &lpWideCharStr[],int cchWideChar);
#import

int start()
{
        int wbuf[]; string st="1234";
        int n=MultiByteToWideChar (65001, 0, st, -1, wbuf, 0);
        ArrayResize(wbuf, n); MultiByteToWideChar (65001, 0, st, -1, wbuf, n);
        st=""; for (int i=0; i<n; i++) st=st+" "+DoubleToStr(wbuf[i],0); Print("arr="+st);
        st=""; for(i=0; i<ArraySize(wbuf); i++) for(int j=0; j<4; j++) st=st+CharToStr((wbuf[i]>>(j*8))&0xFF); 
        Print("after="+st);
}

我仍然不知道MultiByteToWideChar是否有效,但它确实记录了正确的字符串

我还添加了

#import "ntdll.dll"
   int RtlGetLastWin32Error();
   int RtlSetLastWin32Error(int dwErrCode);
#import 
        hSession=WinHttpOpen("MqlHttp", 0, "", "", 0);
        Print("hSession="+Http.hSession);

        RtlSetLastWin32Error(0); //сбрасываем последний код ошибки
        hConnect=WinHttpConnect(hSession, "www.mql4.com", 80, 0);
        if (hConnect<=0) Print("-Err create Connect "+RtlGetLastWin32Error());
错误 12005 - 无效的URL
 

重写了函数描述,用一个数组代替了ServerName字符串。

int WinHttpConnect(int hSession, int& pswzServerName[], int nServerPort, int dwReserved);

但它并没有...同样的错误。

        RtlSetLastWin32Error(0); //сбрасываем
        int wHost[]; int n=MultiByteToWideChar (65001, 0, "www.mql4.com", -1, wHost, 0);
        ArrayResize(wHost, n); MultiByteToWideChar (65001, 0, "www.mql4.com", -1, wHost, n);
        hConnect=WinHttpConnect(hSession, wHost, 80, 0);
 

问题不是关于MQL4语言。这个问题是关于C++的。这里有很多人知道这种语言。我只是需要一些建议。我没有把我的问题放在新手主题里,因为一般来说,刚开始接触编程的 人经常会访问它。

Scintilla

我找不到任何关于如何在Borland C++ Builder 6.0企业版中安装scintilla的俄语说明。在谷歌上搜索,没有得到结果。我已经用尽了我的时间在论坛上搜索。根本没有俄文的信息。我的英语水平并不高,在这个水平上。我在C++的论坛上问过这个问题,但没有答案。能否请您建议如何实现这一目标?
我从异地下载了安装程序(附在本帖之后)

附加的文件:
scintilla224.zip  1184 kb
 
drknn:

问题不是关于MQL4语言。这个问题是关于C++的。这里有很多人知道这种语言。我只是需要一些建议。我没有把我的问题放在新手主题里,因为一般来说,刚开始接触编程的人经常会访问它。

Scintilla

我找不到任何关于如何在Borland C++ Builder 6.0企业版中安装scintilla的俄语说明。在谷歌上搜索,没有得到结果。我已经在论坛上搜索了很久了。根本没有俄文的信息。我的英语水平并不高,在这个水平上。我在C++的论坛上问过这个问题,但没有答案。能否请您建议如何实现这一目标?
我从网站外下载了安装程序(附在本帖后面)。

你想把它作为一个VCL嵌入到环境中吗?你必须用手写组件,我看不出有别的办法......
 
sergeev:

重写了函数描述,用一个数组代替了ServerName字符串。

但它并没有...同样的错误。

这可能很愚蠢,但是...你有没有试着在URL中加入HTTP://?
 
alsu:
你想把它作为一个VCL嵌入到环境中吗?你必须用手写组件,我看不出有别的办法...

据我所知,我不需要1个组件,而是需要整个调色板的组件。我试着在Borland.Delphi.v7.0中嵌入了一个类似的SynEdit调色板。我不喜欢的是,文本编辑器的行数从01开始,而不是像Notepad++中实现的从1开始。另外,在SynEdit中找不到一个可以突出 用户语言语法 的组件。各种C++、pascal、java、php......但没有自定义语言。或者也许有,但我找不到。所以我想,有一个替代方案--skintilla--我在互联网上读到过它。所以我在谷歌上搜索了一下说明。但什么都没有。在论坛上也是如此。然而,我看到有人写到使用Skintilla的这个或那个组件。但没有人提到它是如何进入调色板的。这很奇怪...
 

我需要这样的调色板