Запись в файл.....? - страница 2

 
А кто будет дескрипторы файлов перед return (0) закрывать?


Они закрываются. Или я что-то не понял.
 
 FileClose(handle);
 FileClose(handleQuotes);



Если во внутренних условиях тоже закрывать дескрипторы.....все тоже самое.

 
янв.44 янв.31 янв.34
янв.51 янв.26 янв.49
янв.49 янв.32 янв.38
янв.46 янв.36 янв.45
Это Excel преобразовывает числа в даты.
Чтобы всё сохранялось "как есть", надо использовать формат ячеек "Текстовый" ;)

А если это на этапе записи, то можно записывать одну длинную строку (например, "1.2046;1.2021;2005.05.01"), а в Excel простой формулой разбивать это "щастье" на несколько =)
Хотя, это, конечно, - обходы...
 
У Вас в двух местах утечка файловых дескрипторов.

Исправьте код и заново детально сформулируйте свой вопрос, пожалуйста.
Правильно заданный вопрос - 50% ответа.
 
И так, вопрос такой: У меня индикатор. Хочу проверить его алгоритм выводом данных в файлы renko.csv и quotes.csv. В файле quotes исключительно только котировки.
После расчета значений индикатора идет блок записи в файл.

Вы говорите о потере дескриптора, но файлы все закрываются! Покажите пожалуйста где может быть эта потеря? Раньше еще формировал заголовок, но убрал его.....так что весь код для записи файлов в низу.....


int start()
int handle,handleQuotes,err;

while(i>=0)
{
// Алгоритм индикатора
.......................................

// открываем первый файл
handle=FileOpen("Renko.csv",FILE_CSV|FILE_WRITE|FILE_READ, ';');
err= GetLastError();
if (err!= 0) {
Comment("err=",err);
return (0);
}

// открываем второй файл
handleQuotes=FileOpen("Quotes.csv",FILE_CSV|FILE_WRITE|FILE_READ, ';');
err= GetLastError();
if (err!= 0) {
Comment("err=",err);
FileClose(handle);

return (0);
}

if((handle>0)&&(handleQuotes>0))
{
Comment("err1=",err);
FileSeek(handle, 0, SEEK_END);
FileSeek(handleQuotes, 0, SEEK_END);

FileWrite(handle, ExtMapBuffer1[i],ExtMapBuffer2[i],TimeToStr(Time[i],TIME_DATE),TimeToStr( Time [i],TIME_MINUTES),i,High[i],Low[i],Close[i],Value1,Brick,BricksUp,BricksDn);
err= GetLastError();
if (err!= 0) {
Print("Ошибка записи в файл - Renko.csv ", err);
FileClose(handle);
FileClose(handleQuotes);

return (0);
}
FileWrite(handleQuotes,i,High[i],Low[i],Close[i] );

err= GetLastError();
if (err!= 0) {
Print("Ошибка записи в файл - Quotes.csv ", err);
FileClose(handle);
FileClose(handleQuotes);

return (0);
}

// Закрытие файлов
FileClose(handle);
FileClose(handleQuotes);

}
i--;
} // end while
 
А как записывать в файл .xls чтобы ексель нормально открывал?
 
А как записывать в файл .xls чтобы ексель нормально открывал?

В самом mt никак, только через com сервер excel (Excel.Application), но зачем когда есть csv.
 
// открываем первый файл
handle=FileOpen("Renko.csv",FILE_CSV|FILE_WRITE|FILE_READ, ';');
err= GetLastError();
if (err!= 0) {
Comment("err=",err);
return (0);
}

// открываем второй файл
handleQuotes=FileOpen("Quotes.csv",FILE_CSV|FILE_WRITE|FILE_READ, ';');
err= GetLastError();
if (err!= 0) {
Comment("err=",err);
FileClose(handle);

return (0);
}

if((handle>0)&&(handleQuotes>0))
{
Comment("err1=",err);
FileSeek(handle, 0, SEEK_END);
 
У Вас в двух местах утечка файловых дескрипторов.

Вы говорите о потере дескриптора, но файлы все закрываются!

Да, _теперь_ файлы везде закрываются.

И так, вопрос такой: У меня индикатор.

К сожалению, вопроса нет. В чем именно проблемы и в чем именно вопрос?
Попытайтесь встать на место того, кто хочет помочь и ответить?
Сформулируйте точный вопрос, пожалуйста.
 
Кстати, после открытия файла _сначала_ надо проверять значение возврата и _только_потом_, при наличии ошибки, проверять GetLastError();
 
to Rosh:

Не понял....объясни пожалуйста.
Первый файл закрывается, если нельзя открыть второй......

if((handle>0)&&(handleQuotes>0))
{
Comment("err1=",err);
FileSeek(handle, 0, SEEK_END);


Это условие в итоге не отрабатывает.