错误、漏洞、问题 - 页 2580

 
Koldun Zloy:

1.在MQL中,复制的是一个字符串,而不是一个指针。

_DLLAPI void fnReplaceString(wchar_t * text, wchar_t *from, wchar_t * to)
{
   wchar_t * cp;
   
   //проверка параметров
   if(text==NULL || from==NULL || to==NULL) return;
   if(wcslen(from)!=wcslen(to))             return;
 
   //поищем подстроку
   if((cp=wcsstr(text,from))==NULL)         return;

   //заменим
   memcpy(cp,to,wcslen(to)*sizeof(wchar_t));
}
#import "MQL5DLLSamples.dll"
void fnReplaceString(string & text, string from, string to);
#import


第3.3节

 
Koldun Zloy:

2.你在MQL中强调了一个200个字符的行。然后你复制了164个字符到里面。之后,在MQL中看一下字符串的大小。它仍然是200。

长度,而不是尺寸!长度为字符,大小为字节。
检查了,在得到一个164个字符的字符串后,是的,长度仍然是200。
对此有什么想法吗?

 
Roman:

所以为了使它正确,我放弃了memcpy,而使用wcscpy或wcsncpy。
结果,上面的帖子。

我的意思是sizeof( wchar_t* )。

 
Roman:


第3.3节

你最好不要和我争论,而是更仔细地阅读这篇文章。并弄清楚那里发生了什么事。

那么你就不会有任何问题了。

你想做的事其实没有那么复杂。

 
Roman:

长度,而不是尺寸!长度为字符,大小为字节。
检查了,在得到一个164个字符的字符串后,是的,长度仍然是200。
对此有什么想法吗?

为什么会出现这种情况,上面已经解释过了。

 
Koldun Zloy:

你想做的事其实并不难。

所以告诉我,如果这不是那么困难。
还是你认为这是正常的行为?

 
Roman:

所以告诉我,如果这不是那么困难。
还是你认为这是正常的行为?

所以你根本不打算了解什么,只是给你一个现成的食谱,就这样?

我不明白如果编程对你来说是一种负担,你为什么要做编程,但这取决于你。


你认为如果你问了一个问题而不想展示详细的可重复的代码,会有人愿意帮助你吗?

或者不读,或者与那些知道得更多的人争论?


因此,不会有一个现成的食谱。我将写一个从DLL中获取字符串的一般原则。如果你认为自己是个程序员,你可以自己编写代码。


1.在MQL中,你创建了ushort数组。

初始化它。

3.将数组和它的大小传递给DLL。

4.在DLL中,使用wmemcpy_s()函数将一个字符串复制到这个数组。

5.返回从DLL复制的字符串的长度。

6.在MQL中,使用ShortArrayToString()函数从阵列中创建一个字符串。

 
与本主题无关的评论已被移至 "MQL4 MT4 MetaTrader 4初学者的问题"。
 

在其中一个服务器上(不是MQ),MT5变得很疯狂--它将CPU负载到100%,并密集地记录不同工具的这些信息。

HistoryBase持续自发更新

图表在闪烁。这是不可能的工作。

有没有可能在本地解决这个问题,或者唯一的出路是等待服务器完成一些游戏?

 
Koldun Zloy:

所以你根本不打算了解什么,只是给你一个现成的食谱,就这样?

我不明白如果编程对你来说是一种负担,你为什么要做编程,但这取决于你。

你认为如果你问了一个问题而不想展示详细的可重复的代码,会有人愿意帮助你吗?

或者不读,或者与那些知道得更多的人争论?

因此,不会有一个现成的食谱。我将写一个从DLL中获取字符串的一般原则。如果你认为自己是个程序员,你可以自己编写代码。


1.在MQL中,你创建了ushort数组。

初始化它。

3.将数组和它的大小传递给DLL。

4.在DLL中,使用wmemcpy_s()函数将一个字符串复制到这个数组。

5.返回从DLL复制的字符串的长度。

6.在MQL中,使用ShortArrayToString()从阵列中创建一个字符串。

你认为这里有什么论据?这是一个工作上的讨论,没有必要把意思扭曲成一个鸡窝,带着傲慢的悲情。
你并没有要求任何现成的东西。我以为你和指针有一个解决方案,但你没有。
是你没有读过这个主题,这里已经讨论数组很长时间了,大家都很清楚。
而我很久以来一直倾向于数组。但既然mql有字符串,为什么不直接使用它呢?
我们在这里讨论的正是mql的字符串中的这个错误,即把一个指针复制到其中。
我再告诉你,并不是只有通过ushort才能解决一切问题。数组有很多选择。
但在我的情况下,我不想使用数组,因为代码结构并不总是合理的。
更何况我有mql的字符串,我可以直接使用,但它必须正常工作。