错误、漏洞、问题 - 页 2732

 
Vladimir Karputov:

开始搜索(任何搜索,任何名称)并立即停止搜索。这将出现一个搜索栏,你可以选择文件类型。


哎呀...谢谢你。
 
Artyom Trishkin:

我知道我需要找到视频文件。一切都是。绝对的。至于它们是什么类型和名称,让机器自己去看。

很难猜测机器如何搜索,但在DOS中如何搜索(按Win+R,写cmd),像这样。

dir/b/s  *.3 g2 *.3 gp *.3 gp2 *.3 gpp *.3 gpp2 *.asf *.asx *.avi *.bin *.dat *.drv *.f4v *.flv *.gtp *.h264 *.m4v *.mkv *.mod *.moov *.mov *.mp4 *.mpeg *.mpg *.mts *.rm *.rmvb *.spl *.srt *.stl *.swf *.ts *.vcd *.vid *.vid *.vid *.vob *.webm *.wm *.wmv *.yuv > d:\filename.txt

我在谷歌上搜索了第一个网站http://fileext.ru/video, 将其粘贴到Excel中,使其成列,然后再粘贴到记事本中。

最后一个参数,用于写入带有路径和文件名的搜索数据 d:\filename.txt

我检查过了,是工作....但我的二进制与视频无关 ))))

 
在没有互联网的情况下,用MQL5云保护进行的编译似乎会使编辑器挂起。起初,它轻轻地挂起(即编辑器可用于其他操作,但编译命令在等待完成,如果有超时,不清楚要等待多久)。如果按了 "取消 "按钮,它就会紧紧地挂起来。
 

我想从.dll返回字符串到MQL4(MQL5完全没有问题)。

我已经犯了很多错误,所以我需要问一些知识性的问题:什么是内存中的字符串阵列?- 什么是字符串的数组?

string s_arr_1[];
// эти массивы чем-нибудь отличаются?
string s_arr_2[10];
 
Igor Makanu:

我想从.dll返回字符串到MQL4(MQL5完全没有问题)。

我已经犯了很多错误,所以我需要问一些知识性的问题:什么是内存中的字符串阵列?- 什么是字符串的数组?

字符串数组是一个字符串对象的数组。在某个地方,一个开发者写道,有两个字段:一个指向字符串的指针和32位分配的内存大小。一般来说,把这样的事情写在官方文档里就好了,这样就不会被人猜到。
 
Igor Makanu:

什么是内存中的字符串数组?- 什么是字符串阵列?

关于MASSIVE数据结构。
我描述的是MT5,MT4也应该是这样,可能有些地方会不同,但应该是接近的。

一般来说,阵列由两部分组成:描述和数据,但也可能只由数据组成。
数据是为数组元素分配的内存。
描述 - 包含以下字段的结构,该序列不被保存。

flags - 一组描述阵列的标志:IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - 数组中创建的元素数量。
capacity - 阵列中保留元素的数量。
构造函数指针 - 指向数组元素的构造函数的指针。
解构器指针 - 指向数组元素的解构器函数的指针。
data pointer - 指向数组开始的指针。

string s_arr_1[];- 动态数组,由一个描述和一个数据数组组成。
string s_arr_2[10]; - 数组的类型取决于字符串的位置。
如果作为局部变量 使用,它是一个静态数组,由一个描述和一个数据数组组成,依次位于堆栈中。
如果作为结构/类中的一个字段使用,它只是一个数据数组(描述部分缺失)。
 
Sergey Dzyublik:

关于数据结构MASSIVE。
这是记忆中对MT5的描述,对MT4也应该如此,可能有些地方会不同,但应该很接近。

一般来说,阵列由两部分组成:描述和数据,但也可能只由数据组成。
数据是为数组元素分配的内存。
描述 - 包含以下字段的结构,该序列不被保存。

flags - 一组描述阵列的标志:IsDynamic, IsSetAsSerrias, IsIndexBuffer, ...
size - 数组中创建的元素数量。
capacity - 阵列中保留元素的数量。
构造函数指针 - 指向数组元素的构造函数的指针。
解构器指针 - 指向数组元素的解构器函数的指针。
data pointer - 指向一个数组开始的指针。

string s_arr_1[];- 动态数组,由一个描述和一个数据数组组成。
string s_arr_2[10]; - 数组类型取决于字符串的位置。
如果作为局部变量 使用,它是一个静态数组,由一个描述和一个数据数组组成,依次位于堆栈中。
如果作为结构/类中的一个字段使用,它只是一个数据数组(描述部分缺失)。

谢谢你!

有一个希望,也许存在来自WinAPI的一些标准结构,但显然它不可能与字符串相同。

SZZ:我已经修复了与dll的交换,但和以前一样分两次调用--请求dll中的动作并返回字符串所需的缓冲区大小,第二次调用时将字符串复制到准备好的缓冲区中,好吧,问题是局部的,但我希望我能够简化解决方案。


弗拉基米尔-西马科夫
字符串数组是一个字符串对象的数组。在某个地方,一些开发者写道,有两个字段:一个指向字符串的指针和32位的分配内存大小。一般来说,在官方文档中写出这样的东西是很好的,这样就不会让人猜到。

主要问题是,MQL4和5是非常不同的程序 ))))

MQL4中的字符串在.Net中被StringBuilderClass 完美解析,所以你是对的,字符串不是一个内存位置,而是一个对象。

 
что из себя представляет массив строк в памяти? - что такое массив строк?! 

关于数据结构 STR。
我根据记忆对MT5进行了描述,同样的情况应该也适用于MT4,可能有些地方会有所不同,但应该很接近。


该行由描述+数据组成。
描述包含以下字段。

buffer_len - 为字符串分配的缓冲区大小。
unicode_str指针 - 指向数据结构 中unicode_str字段(offset+8)的指针。

数据包含以下字段。
flags - 一组描述字符串的标志:static(0x03)/dynamic(0x01), 可能是编码...
len - 字符串长度;
unicode_str - unicode_str字符串,由描述中的unicode_str指针直接指向。
 
Sergey Dzyublik:

关于数据结构 STR。
我根据记忆对MT5进行了描述,同样的情况应该也适用于MT4,可能有些地方会有所不同,但应该很接近。


该行由描述+数据组成。
描述包含以下字段。

buffer_len - 为字符串分配的缓冲区大小。
unicode_str指针 - 指向数据结构 中unicode_str字段(offset+8)的指针。

该数据包含以下字段。
flags - 一组描述字符串的标志:static(0x03)/dynamic(0x01), 可能是编码...
len - 字符串长度;
unicode_str - unicode_str字符串,由描述中的unicode_str指针直接指向。

问题。是在什么地方描述的还是你自己分析的?

 
Igor Makanu:

我想从.dll返回字符串到MQL4(MQL5完全没有问题)。

我已经犯了很多错误,所以我需要问一些知识性的问题:什么是内存中的字符串阵列?- 什么是字符串的数组?

只传递一个Uchar数组而不是一个字符串数组。这样做更容易。
例如,你可以这样转换。

int StringArrayToCharArray(string &stringArr[],uchar &c[]) {
   uchar temp[];
   int pos=0;
   for (int i=0; i<ArraySize(stringArr); i++) {
      ArrayFree(temp);
      StringToCharArray(stringArr[i],temp);
      ArrayCopy(c,temp,pos);
      pos+=ArraySize(temp);
   }
   return pos;
}
//+------------------------------------------------------------------+

int CharArrayToStringArray(string &stringArr[],uchar &c[]) {
   ArrayFree(stringArr);
   int pos=0;
   int j=0;
   for (; pos<ArraySize(c); j++) {
      ArrayResize(stringArr,j+1);
      stringArr[j]=CharArrayToString(c,pos);
      while(c[pos]!=0) pos++;
      pos++;
   }
   return j;
}

对MQL4和MQL5的作用相同

附加的文件: