任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 1118

 
  FileReadArray(file_handle,arr);

请告知可能的发展。

我有数组[100],还保存了大小为[1000]的二进制文件,如何返回二进制文件的最后100个值的数组。有什么普遍的东西吗?我又做了12个小时的工作,什么都没有。

 
Top2n:
  FileReadArray(file_handle,arr);

请告知可能的发展。

我有数组[100],还保存了大小为[1000]的二进制文件,如何返回二进制文件的最后100个值的数组。有什么普遍的东西吗?我已经在这上面工作了12个小时,什么都没有。

如果我没记错的话,在mql4中写到,如果count = WHOLE_ARRAY或者值超过了数组元素的 数量,那么整个数组就被写到最后。而且它没有说任何保证金。也就是说,不提1,000是不可能的。

要检查它,要计算写了多少个值和文件的大小。

 
Alexey Viktorov:

如果我没记错的话,在mql4中写到,如果count = WHOLE_ARRAY或者值超过了数组元素的 数量,整个数组就被写到了最后。而且它没有说任何保证金。因此,如果没有1000分的差距,这可能是绝对不可能的。

要检查这一点,请计算有多少数值被写入以及由此产生的文件大小。

我的意思不是说把数组写入二进制后,出现了新的数据,我通过一个新的尺寸数组(=主数组列的尺寸)不断把它们写入二进制,每次到文件的末尾,为一个新的j列

那么我们需要从二进制中删除与原数组索引相等的数据,这些数据在第一次整合中被转移到二进制中。然而,最后的数据将包括在这个有限的数组中,因为二进制的数据比主数组大,因为二级行已经被添加。第二行必须进入读数组,二进制中的第一行必须在区域之外。

 
Top2n:

我并不是说在将数组写入二进制文件后,在一段时间后出现了新的数据,我继续通过一个新的尺寸数组(=主数组列的尺寸)将其写入二进制文件,每次都是在文件的最后,为一个新的j-列

那么我们需要从二进制中删除与原数组索引相等的数据,这些数据在第一次整合中被转移到二进制中。然而,最后的数据应该以这样的方式删除,即最后的数据包括在这个有限的数组中,因为由于增加了二级行,二进制比主数组更大。

那么在读之前就不需要给数组分配一个维度。如果不是需要的第一个数据,那么就需要计算以字节为单位的大小,并将读取的起始位置移到合适的位置。
 
Alexey Viktorov:
那么你就不需要在读之前给数组 分配一个大小。如果不是需要的第一个数据,那么就计算出以字节为单位的大小,并将读取的起始位置移到合适的位置。

这就是如何计算字节的问题

FileWriteInteger(h,s1,INT_VALUE); //ножно ли перед записью записывать размера массива?
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?

может как то через это sizeof
 
Top2n:

这就是如何计算字节的问题

FileWriteInteger(h,s1,INT_VALUE); //ножно ли перед записью записывать размера массива?
s1=FileReadInteger(h,INT_VALUE); //ножно ли перед восстановлением считываем размер массива?

может как то через это sizeof

如果数据是双倍类型的,那么用文件大小 除以双倍类型所占的字节数,即除以8。

Документация по MQL5: Файловые операции / FileSize
Документация по MQL5: Файловые операции / FileSize
  • www.mql5.com
Файловые операции / FileSize - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov:

如果数据是双数,那么用文件大小 除以双数所占的字节数,即除以8。

它是由FileFindFirst 提供的吗?

或者只是以字节为单位扫描每个新行

Короче при записи начал суммировать вторичный массив в байтах, каждая запись плюсуется с предыдущей
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать

FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
错误的
 
Top2n:
有了FileFindFirst?
你有文件的名称和它的句柄。
 
Top2n:

通过FileFindFirst?

或者只是以字节为单位对每一个新行进行汇总

Короче при записи начал суммировать вторичный массив в байтах, каждая запись плюсуется с предыдущей
file_size=+FileSize(handle); // чтобы выяснить индекс от которого открывать

FileReadArray(file_handle,arr,file_size,WHOLE_ARRAY);
这是不对的。

你不应该在回答完后再纠正你的帖子...

错了。在读取一个数组之前,定义它的大小file_size =FileSize(handle); 并除以数据类型所占的内存,即对于double除以8。你会得到文件中的数字数量。如果数组是二维的,那么文件中的记录数量将减少两倍。然后你会得到应该移位多少个字节来读取所需的行。

 
Alexey Viktorov:

你应该在回帖后更正你的帖子...

错了。在读取一个数组之前,定义它的大小file_size =FileSize(handle); 并除以数据类型所占的内存,即对于double除以8。你会得到文件中的数字数量。如果数组是二维的,那么文件中的记录数量将减少两倍。然后你会得到应该移位多少个字节来读取所需的行。

我最后除以8000,这样数组的值就可以放入它们的索引中。