//+------------------------------------------------------------------+ //| Запись n элементов массива в файл | //+------------------------------------------------------------------+ void WriteData(constint n) { //--- откроем файл ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arrayZ,0,n); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); }
//+------------------------------------------------------------------+ //| Запись n элементов массива в файл | //+------------------------------------------------------------------+ void WriteData(constint n) { //--- откроем файл ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arrayZ,0,n); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); }
//--- путь к файлу string path=InpDirectoryName+"//"+InpFileName; //--- откроем файл ResetLastError(); int file_handle=FileOpen(path,FILE_READ|FILE_BIN); if(file_handle!=INVALID_HANDLE) { //--- прочитаем все данные из файла в массив FileReadArray(file_handle,arr); //--- получим размер массива int size=ArraySize(arr); //--- распечатаем данные из массива Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]); Print("Total data = ",size); //--- закрываем файл FileClose(file_handle); } else Print("File open failed, error ",GetLastError());
2017.01.0917:20:40.609 TorFid_v02 (EURUSD,H1) = 0.0 = 0.0 = 0.0 2017.01.0917:20:40.609 TorFid_v02 (EURUSD,H1) Total data = 1020100
我明白缺少什么,即反向转换为二维数组,但我不明白如何
当然,除非我正确地保存它。
for(int z=1; z<=ARRAY_SIZE_Y; z++) // Перебор по барам, колонка Y { for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X { arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5); // M(I) SMA } } WriteData(1000);
//+------------------------------------------------------------------+ //| Запись n элементов массива в файл | //+------------------------------------------------------------------+ void WriteData(constint n) { //--- откроем файл ResetLastError(); int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN); if(handle!=INVALID_HANDLE) { //--- запишем данные массива в конец файла FileSeek(handle,0,SEEK_END); FileWriteArray(handle,arr,0,n); //--- закрываем файл FileClose(handle); } else Print("Failed to open the file, error ",GetLastError()); }
好时间,如何在完成的文件.csv中添加新的一行,并将其转移到第1行 - 如果可能的话?或者其他的东西,但没有重新计算/循环现有的数据。除非允许更新列名和行名
{
int handle= FileOpen(fileName,FILE_CSV|FILE_WRITE," "),x=0,y=0;
移除FILE_CSV,如果你 使用"\n\t "格式,则使用FILE_ANSI 代替。
移除FILE_CSV,如果你使用"\n\t "等,则使用FILE_ANSI 代替。
你好,任务是覆盖一个二维数组,是BIN格式的,请问该函数能识别二维数组的输入吗?
文件写入阵列
当然,它将读作二维的。对不起,没有冒犯的意思...直接写一个2x2元素的测试数组,读取它,看看不是更容易吗?
NULL空值被写入文件。arrayZ是二维的
//| Запись n элементов массива в файл |
//+------------------------------------------------------------------+
void WriteData(const int n)
{
//--- откроем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arrayZ,0,n);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
}
NULL空值被写入文件。arrayZ是二维的
//| Запись n элементов массива в файл |
//+------------------------------------------------------------------+
void WriteData(const int n)
{
//--- откроем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arrayZ,0,n);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
}
我今天太懒了,没有时间...在文档中,在你复制这个函数的地方,他们甚至写了结构的数组。如果你不改变它,文档中给出的整个例子是否有效?你自己检查一下,如果不行,你就得写到CD上。
这些都是序列化的功能。如果你想以文本可读的格式打开文件--向文件写入字符串。
string s = StringFormat("first line: %s\n", first);
s += StringFormat("second line: %s\n", second);
s += StringFormat("third line: %s\n", third);
文件写入(s)。
等等,诸如此类。
读取FileRead并解析每一行(你必须玩一玩,但如果你想要可读性,你就必须这样做)。
像孩子一样,天哪。他们期望从一个时髦的圣诞奇迹中,像它会很好地做一切事情,把它全部填满,并把它的格式))))。
总的来说,祝大家圣诞快乐,好运气))))。
不要将FileWriteArray和FileReadArray锐化器用于它们不打算用于的目的。
这些都是序列化的功能。如果你想以文本可读的格式打开文件--向文件写入字符串。
string s = StringFormat("first line: %s\n", first);
s += StringFormat("second line: %s\n", second);
s += StringFormat("third line: %s\n", third);
文件写入(s)。
等等,诸如此类。
读取FileRead并解析每一行(你必须玩一玩,但如果你想要可读性,你就必须这样做)。
像孩子一样,天哪。他们期望从一个时髦的圣诞奇迹中,像它会很好地完成一切,把它全部填满,并把它的格式))))。
总的来说,圣诞快乐,祝大家圣诞快乐!))))。
你能告诉我是否有可能绕过从csv导入二维数组。从指标中提取一个三(或二)维数组到EA中?
CFileReadDouble 是否考虑一个二维数组,如果是,如何考虑?
一般来说,应该用什么操作来把csv矩阵转换成数组?
一般来说,我不明白,比如说,举个例子
//--- прочитаем данные из файла
for(int i=0;i<size;i++)
{
time_buff[i]=(datetime)FileReadDouble(file_handle);
ma_buff[i]=FileReadDouble(file_handle);
}
这样,在数组time_buff[i]和ma_buff[i]中写入相同的数据。
例子来自https://www.mql5.com/ru/docs/files/filereaddouble
而如果我有一个二维数组,我怎么能安排枚举。
如果我使用FileReadString, 我需要指定字符串的长度,我需要知道字符串中的数字数量,而不是单元格?
显然,我应该使用FileReadNumber,但这太奇怪了
你能告诉我是否有可能绕过从csv导入二维数组。从指标中提取一个三(或二)维数组到EA中?
CFileReadDouble 是否考虑一个二维数组,如果是,如何考虑?
一般来说,应该用什么操作来把csv矩阵转换成数组?
一般来说,我不明白,比如说,举个例子
//--- прочитаем данные из файла
for(int i=0;i<size;i++)
{
time_buff[i]=(datetime)FileReadDouble(file_handle);
ma_buff[i]=FileReadDouble(file_handle);
}
这样,在数组time_buff[i]和ma_buff[i]中写入相同的数据。
例子来自https://www.mql5.com/ru/docs/files/filereaddouble
而如果我有一个二维数组,我怎么能安排枚举。
如果我使用FileReadString, 我需要指定字符串的长度,我需要知道字符串中的数字数量,而不是单元格?
显然,我应该使用FileReadNumber,但这太奇怪了
请告诉我,当我们谈到写一个数组FileWriteArray()时,你是如何尝试读取所写的内容的?
string path=InpDirectoryName+"//"+InpFileName;
//--- откроем файл
ResetLastError();
int file_handle=FileOpen(path,FILE_READ|FILE_BIN);
if(file_handle!=INVALID_HANDLE)
{
//--- прочитаем все данные из файла в массив
FileReadArray(file_handle,arr);
//--- получим размер массива
int size=ArraySize(arr);
//--- распечатаем данные из массива
Print(" = ",arr[0][0]," = ",arr[1][1]," = ",arr[2][2]);
Print("Total data = ",size);
//--- закрываем файл
FileClose(file_handle);
}
else
Print("File open failed, error ",GetLastError());
2017.01.09 17:20:40.609 TorFid_v02 (EURUSD,H1) Total data = 1020100
我明白缺少什么,即反向转换为二维数组,但我不明白如何
当然,除非我正确地保存它。
{
for(int q=1; q<ARRAY_SIZE_X-1; q++) // Перебор по периоду, колонка X
{
arr[q][z]=NormalizeDouble(sm.d[q+1].m[nBar-z],5); // M(I) SMA
}
}
WriteData(1000);
//| Запись n элементов массива в файл |
//+------------------------------------------------------------------+
void WriteData(const int n)
{
//--- откроем файл
ResetLastError();
int handle=FileOpen(path,FILE_READ|FILE_WRITE|FILE_BIN);
if(handle!=INVALID_HANDLE)
{
//--- запишем данные массива в конец файла
FileSeek(handle,0,SEEK_END);
FileWriteArray(handle,arr,0,n);
//--- закрываем файл
FileClose(handle);
}
else
Print("Failed to open the file, error ",GetLastError());
}