Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
Выходит, что вторичный массив записывается на первичный, возможно перед записью что то сделать нужно FileSeek(handle,0,SEEK_END); Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме. FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
在bin文件中补充新条 的行的代码
if(count==size) { // ArrayResize(arrS,coun); for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X { arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA coun++; } ResetLastError(); int handle=FileOpen(path,FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_SET); FileWriteArray(handle,arrS); Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); count=1; }
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
Выходит, что вторичный массив записывается на первичный, возможно перед записью что то сделать нужно FileSeek(handle,0,SEEK_END); Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме. FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
在bin文件中补充一个新条 目的行的代码
if(count==size) { // ArrayResize(arrS,coun); for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X { arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA coun++; } ResetLastError(); int handle=FileOpen(path,FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_SET); FileWriteArray(handle,arrS); Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); count=1; }
我不记得我在哪里读到的,但如果你打开一个只用于写作的文件,其中的所有内容都会被删除。
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
该文件必须被打开以进行读写
int handle = FileOpen(path, FILE_READ|FILE_WRITE|FILE_BIN);
ResetLastError(); int file_handle=FileOpen(path,FILE_READ|FILE_BIN); if(file_handle!=INVALID_HANDLE) { //--- прочитаем все данные из файла в массив //file_siz=FileSize(file_handle)/8000; //FileSeek(file_handle,file_size,SEEK_END); FileReadArray(file_handle,arr); //--- получим размер массива int siz=ArraySize(arr); //--- распечатаем данные из массива Print("arr = ",arr[1][3]," Bid = ",arr[1][2]," Ask = ",arr[0][3]); Print("file_siza = ",file_siz); //--- закрываем файл FileClose(file_handle);
FileSeek(file_handle,file_size,SEEK_SET); что делает - определяет положение массива или в бине?
结果,我除以8000,这样,数组的值就适合它们的索引了
你告诉我...
文件大小
返回以字节为单位的 文件大小。
类型
字节大小
正的最小值
最大值
C++中的模拟
浮动
4
1.175494351e-38
3.402823466e+38
浮动
双
8
2.2250738585072014e-308
1.7976931348623158e+308
双
文件的大小,以字节为单位,类型 为双倍 的大小,需要除以zhzhezhezhezhezhezhezhez。
你告诉我...
类型
字节大小
最小正值
最大值
C++中的模拟
浮动
4
1.175494351e-38
3.402823466e+38
浮动
双
8
2.2250738585072014e-308
1.7976931348623158e+308
双
文件的大小,以字节为单位,类型 为双倍 的大小,必须除以zhzhezhezhezhezhezhezhezhezhezhezhezhezhez的字节。
什么是zzzzzzzz?这不可能,你就不能悠着点吗?
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
FileSeek(handle,0,SEEK_END);
Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива
int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме.
FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива
FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
在bin文件中补充新条 的行的代码
{
// ArrayResize(arrS,coun);
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA
coun++;
}
ResetLastError();
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_SET);
FileWriteArray(handle,arrS);
Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
count=1;
}
Получается, что если массив динамический, то формула /16, не совсем подходит, хотя второе же измерение фиксировано, к там уже -
FileSeek(handle,0,SEEK_END);
Люди записывают переменные в массив, возможно поможет? типо такого
int dataArraySize = ArraySize(dataArray); //записываем в переменную размер массива
int fileHandle = FileOpen("filename.dat", FILE_BIN | FILE_WRITE); // открываем файл на запись в бинарном режиме.
FileWriteInteger(fileHandle, dataArraySize);//записываем в файл размер массива
FileWriteDouble(fileHandle, dataArraySize);//записываем в файл все элементы массива
在bin文件中补充一个新条 目的行的代码
{
// ArrayResize(arrS,coun);
for(int q=0; q<ARRAY_SIZE_X; q++) // Перебор по периоду, колонка X
{
arrS[q]=sm.d[q].m[rates_total-1]; // M(I) SMA
coun++;
}
ResetLastError();
int handle=FileOpen(path,FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_SET);
FileWriteArray(handle,arrS);
Print("arrS = ",arrS[0]," arrS = ",arrS[1]," arrS = ",arrS[3]);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
count=1;
}
我不记得我在哪里读到的,但如果你打开一个只用于写作的文件,其中的所有内容都会被删除。
该文件必须被打开以进行读写
我不记得我在哪里读到的,但如果一个文件只被打开写,里面的东西就会被删除。
该文件必须被打开以进行读写
我以为就这样了。
我把新的数据写到开头,它写到了完整的开头,有什么办法可以增加开头的大小吗))
我的意思是,它只限于写到开头吗?还是只继续保存到最后?
如果我保存到最后,并继续添加到最后,我如何从最后读到正确的数量?或者说,如何从bin文件中抓取从N到结束的正确块?
还是我用了错误的命令!!?
我把两个数组保存到最后--正如我所理解的那样,通过增加垃圾桶的重量正确地保存。
然后我尝试将数据传输到数组,任务是捕获最后一条记录,文件仓比数组大。
int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
//--- прочитаем все данные из файла в массив
//file_siz=FileSize(file_handle)/8000;
//FileSeek(file_handle,file_size,SEEK_END);
FileReadArray(file_handle,arr);
//--- получим размер массива
int siz=ArraySize(arr);
//--- распечатаем данные из массива
Print("arr = ",arr[1][3]," Bid = ",arr[1][2]," Ask = ",arr[0][3]);
Print("file_siza = ",file_siz);
//--- закрываем файл
FileClose(file_handle);
如果我从二进制文件中读取所需的部分,用
该算法对数组本身进行处理,缺失的单元被翻译成类似于bin中的位置,这反过来又给出了与bin中相同位置的限制中的要求范围,只是有零。
如果我从二进制文件中读取所需的部分,用
该算法处理数组本身,缺失的单元被翻译成类似于二进制的位置,这反过来又给出了在二进制中相同位置的限制中所要求的范围,只是有零。
我不明白什么会出错......
你 只是打开文件 进行阅读。
将指针移到正确方向的正确字节数上
// В данном случае от конца файла на 32 байта
32字节是8个整数值或4个浮点值。
如果数组是二维的,这意味着如果数组是int类型的,我们移4行,如果数组是double类型的,移2行。
然后,我们将这些值读入事先声明的动态arr[][2]数组中;这是一个二维数组。
就是这样!!!。
接下来,确定阵列的大小
然后打印这些值。
int i, z;
for(i = 0; i < size; i++)
{for(z = 0; z < 2; z++)
{
Print("arr[", i, "][", z, "]", arr[i][z]);
}
}
我不明白什么会出错......
谢谢你,你!它成功了))))。