void CsvTo2D_Array(string nameFile, string Separator, double &array[][], int &StrAmount, int &ColumnAmount, bool &truth)
{ // Обявление переменныхint i,count,count2,lineSize;
string varray[1000];
// Открыть файл CSV для чтения с разделителем "Separator"int handle = FileOpen(nameFile,FILE_CSV|FILE_READ,Separator);
if (handle == 1)
{// если файл найден, узнать количество столбцов в строке
truth=true;
while (i != true)
{
varray[count] = FileReadString(handle);
i = FileIsLineEnding(handle);
lineSize++;
}
FileSeek(handle, 0, SEEK_SET);
i = false;
while (i != true)
{
if (count2 == lineSize) // В файле истории семь позиций
{
count2 = 0; // Если конец строки то обнуляем второй счетчик
count++; // Первый счетчик для распределения строк в первом массиме
}
array[count][count2] = StringToDouble(FileReadString(handle)); // Чтение строки до указателя
count2++; // Второй счетчик для распределения позиций во втором массиве
i = FileIsEnding(handle); // Листаем строки
}
}
else
{
truth=false;
} //Alert("Файл ",nameFile," не обнаружен, последняя ошибка ", GetLastError());} // Если файл не найден вывести сообщениеFileClose(handle); // Закрыть файл
StrAmount =count; //возвращаемое значение количества найденных в файле строк
ColumnAmount =lineSize; //возвращаемое значение количества найденных в файле столбцов
}
Добрый день всем, начал изучать работу с файлами...разобрался как создавать, как дописывать
теперь у меня появились трудности с чтением файла (точнее сравнением полученных данных с данными в файле,проще говоря перебор строк)...
не получается даже правильно вытащить инфу с файла
в файле 3 столбца в 1м нумерация строк 1,2,3,4,5 и т.д. во 2м значения типа 101,111,110 и т.д. всегда по 3 символа, в 3м числа от 0 до 100 напротив каждого значения во втором
Как мне вытащить 2й столбец сравнить с текущим полученным значением и
1) если значения совпадают то переписать/прибавить значение в 3м т .е. было 3 стало 4, было 6 стало 7 ...на +1
2) если значения разные то дописать
из этого всего я знаю только как открыть и дописать фаил
Вот код который я слепил из материала https://book.mql4.com/ru/functions/files точнее попытался слепить, но так ничего и не получилось
int Handle; // Файловый описательstring Instr, // Название валюты
One,Two, // 1я и 2я чать названия инстр.
Text, // Текст описания события
Str_DtTm; // Дата и время события(строка)string Dat_DtTm; // Дата и время события(дата)//--------------------------------------------------------------- 3 --
Handle=FileOpen(Symbol()+"_"+IntegerToString(Period())+".csv",FILE_CSV|FILE_READ|FILE_WRITE,";");
//--------------------------------------------------------------- 4 --while(FileIsEnding(Handle)==false) // До тех пор, пока файловый ..
{ // ..указатель не в конце файла//--------------------------------------------------------- 5 --
Str_DtTm =FileReadString(Handle);// Дата и время события(дата)
Text =FileReadString(Handle);// Текст описания событияif(FileIsEnding(Handle)==true) // Файловый указатель в концеbreak; // Выход из чтения и рисования//--------------------------------------------------------- 6 --
Dat_DtTm =StringToInteger(Str_DtTm); // Преобразование типа данных
Instr =StringSubstr(Text,0,3);// Извлекаем первые 3 символа
One=StringSubstr(Symbol(),0,3);// Извлекаем первые 3 символа
Two=StringSubstr(Symbol(),3,3);// Извлекаем вторые 3 символаPrint(One,Two);
FileClose( Handle ); // Закрываем файл
}
я комментарий и переменные не менял, взял из статьи код как он и есть и хотел хотя бы в Print(); вывести читаемую строку.....
Создал отдельно тему но там никто не отвечает... https://forum.mql4.com/ru/61135#912793
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
А почему?
Вроде нужно
А почему?
Вроде нужно
Потому что возвращает или 1 или -1.
Виктор правильно написал. Функция открывает файл и возвращает файловый описатель. Он может быть любым целым числом.
В MQL4 в случае ошибки возвращает -1.
Виктор правильно написал. Функция открывает файл и возвращает файловый описатель. Он может быть любым целым числом.
В MQL4 в случае ошибки возвращает -1.
а ещё лучше так:
Насколько я помню глюки лезли пока не сделал так:
Добрый день всем, начал изучать работу с файлами...разобрался как создавать, как дописывать
теперь у меня появились трудности с чтением файла (точнее сравнением полученных данных с данными в файле,проще говоря перебор строк)...
не получается даже правильно вытащить инфу с файла
в файле 3 столбца в 1м нумерация строк 1,2,3,4,5 и т.д. во 2м значения типа 101,111,110 и т.д. всегда по 3 символа, в 3м числа от 0 до 100 напротив каждого значения во втором
Как мне вытащить 2й столбец сравнить с текущим полученным значением и
1) если значения совпадают то переписать/прибавить значение в 3м т .е. было 3 стало 4, было 6 стало 7 ...на +1
2) если значения разные то дописать
из этого всего я знаю только как открыть и дописать фаил
Вот код который я слепил из материала https://book.mql4.com/ru/functions/files точнее попытался слепить, но так ничего и не получилось
я комментарий и переменные не менял, взял из статьи код как он и есть и хотел хотя бы в Print(); вывести читаемую строку.....
Создал отдельно тему но там никто не отвечает... https://forum.mql4.com/ru/61135#912793
joo,
спасибо!
Работает и более короткий вариант: