Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 1119
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
в итоге я поделил на 8000 чтоб значения массива встали в свои индексы
Тебе видней...
FileSize
Возвращает размер файла в байтах.
Тип
Размер в байтах
Минимальное положительное значение
Максимальное значение
Аналог в С++
float
4
1.175494351e-38
3.402823466e+38
float
double
8
2.2250738585072014e-308
1.7976931348623158e+308
double
Размер файла в байтах, размер занимаемый типом double в байтах, а делить обязательно надо через жжжжжжжжжжжжжжжжж
Тебе видней...
Тип
Размер в байтах
Минимальное положительное значение
Максимальное значение
Аналог в С++
float
4
1.175494351e-38
3.402823466e+38
float
double
8
2.2250738585072014e-308
1.7976931348623158e+308
double
Размер файла в байтах, размер занимаемый типом double в байтах, а делить обязательно надо через жжжжжжжжжжжжжжжжж
Что такое жжжжж? Он у меня не сходится, блин а нельзя полегче?
Получается, что если массив динамический, то формула /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);//записываем в файл все элементы массива
Код строчки дополняющей бин фаил при новом баре
{
// 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);//записываем в файл все элементы массива
Код строчки дополняющей бин фаил при новом баре
{
// 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;
}
Я не помню где читал, но если файл открывается только для записи, то всё что в нём было удаляется.
Файл надо открывать для чтения и записи
Я не помню где читал, но если файл открывается только для записи, то всё что в нём было удаляется.
Файл надо открывать для чтения и записи
ААА думал что все вышло
Записываю в начало новые данные, он записывает до полного начало, можно ли как нибудь увеличить размер начало))
То есть ограниченна ли запись в начало? или продолжать сохранение только в конец ?
И если я сохраню данные в конец, и продолжу добавлять в конец, то как мне прочитать от конца до нужного количества? Вернее сказать, как захватить с бин файла нужный кусок от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);
Если считываю нужный участок с бинарного файла с помощью
То желаемого результата не удается достичь, алгоритм обрабатывает сам массив, не попавшие в заданный участок ячейки, транслируются аналогично положению в бине, что в свою очередь выдает запрошенный промежуток в пределе того же положения что и в бине только с нулями.
Если считываю нужный участок с бинарного файла с помощью
То желаемого результата не удается достичь, алгоритм обрабатывает сам массив, не попавшие в заданный участок ячейки, транслируются аналогично положению в бине, что в свою очередь выдает запрошенный промежуток в пределе того же положения что и в бине только с нулями.
Я не понимаю что может не получаться...
Просто тупо открываешь файл для чтения
смещаешь указатель на нужное количество байт в нужном направлении
// В данном случае от конца файла на 32 байта
32 байта это 8 целочисленных значений или 4 значения с плавающей точкой.
Если массив двухмерный это значит что сдвигаем на 4 строки если массив типа int или на 2 строки если тип массива double
Далее читаем значения в массив объявленный заранее как динамический arr[][2]; Это двухмерный массив.
ВСЁ!!!
Дальше определяешь размер массива
и печатаешь полученные значения
int i, z;
for(i = 0; i < size; i++)
{for(z = 0; z < 2; z++)
{
Print("arr[", i, "][", z, "]", arr[i][z]);
}
}
Я не понимаю что может не получаться...
Благодарю, Вас! Удалось)))