Чтение htm-файла из Интернета после его сохранения

 

Я видел публикации по записи и чтению htm-файлов. Все скопировал, как в лучших примерах. И все работает. Но работает только при первом исполнении. Если файл из Интернета (не отчеты, которые может формировать мт4, видимо в этом и отличие) сохранен в виде htm и доступ к нему осуществляется после повторного запуска эксперта, то этот файл не открывается с ошибкой 5004. Хотя ровно та же функция открытия замечательно открывает этот же файл сразу после его сохранения, то есть как бы в одной цепочке событий и без перезапуска эксперта.

Я подумал, возможно есть какая хитрость для чтения htm-файлов из Интернета, о которой я не знаю? Речь идет именно о таких файлах из Интернета, а не об отчетах мт4. 

 
А хотя бы кусочек кода показать?
 

Вот это получает файл:

string cookie = NULL, headers;
char post[], result[];
int fhandle, request;
  
string url = "http://www.forexfactory.com/calendar.php";
  
int timeout = 5000;
request = WebRequest("GET", url, cookie, NULL, timeout, post, 0, result, headers);
  
fhandle = FileOpen("calendar_ff.htm", FILE_WRITE|FILE_BIN);
FileWriteArray(fhandle, result, 0, ArraySize(result));
FileClose(fhandle);

 

А это читает и, если файл уже существует (то есть был записан в предыдущем запуске), то не работает с ошибкой 5004:

ResetLastError();
int fhandle = FileOpen("calendar_ff.htm", FILE_READ);
Print(GetLastError());
 
Говорю вам, все предельно правильно, но не работает если файл htm уже записан. Я думаю, может это коцаный файл?? Но тогда почему он читает его сразу после записи, и не читает если файл был записан в предыдущем запуске эксперта??
 
evgeniy scherbina:

Вот это получает файл:

 

А это читает и, если файл уже существует (то есть был записан в предыдущем запуске), то не работает с ошибкой 5004:

Попробуйте добавить в FileOpen флаг FILE_SHARE_READ. Чаще всего помогает.

 
evgeniy scherbina:
Говорю вам, все предельно правильно, но не работает если файл htm уже записан. Я думаю, может это коцаный файл?? Но тогда почему он читает его сразу после записи, и не читает если файл был записан в предыдущем запуске эксперта??

Какой тип и билд терминала? Пожалуйста перезапустите терминал и покажите первые три строчки из вкладки "Журнал" терминала.

 
evgeniy scherbina:
Говорю вам, все предельно правильно, но не работает если файл htm уже записан. Я думаю, может это коцаный файл?? Но тогда почему он читает его сразу после записи, и не читает если файл был записан в предыдущем запуске эксперта??

Вы пишите файл BIN а читать пытаетесь CSV

Попробуйте так:

ResetLastError();
int fhandle = FileOpen("calendar_ff.htm", FILE_READ|FILE_BIN);
Print(GetLastError());
 

При открытии флаги неправильно указаны, не все.

  FileOpen("calendar_ff.htm",FILE_READ|FILE_ANSI|FILE_TXT);

  Вместо FILE_ANSI может FILE_UNICODE 

 

Вот билд из журнала:

 

 

Флаги я перепробовал все. Потом заплакал.

Я подумал, если у кого есть опыт открытия в мт4 htm-файлов из Интернета, поделитесь кодом. Мой код обсуждать и искать в нем ошибки вовсе не обязательно!.. Но есть никто этого не делал (??), тогда давайте обсуждать. 

 
Если кому интересно, то я по-прежнему бьюсь с открытием и чтением htm-файла. У меня есть такая подвижка. Я создал другой файл и скопировал в него содержимое из того файла, который был создан в мт4 при исполнении эксперта. Так вот, свой файл эксперт не открывает, а новый файл, созданный мной вручную в ноутпаде, с тем же содержимым.... ааааааа.... открывает!! Значит, дело в том как файл сохраняется в мт4. Очень жду советов, рекомендаций, хау-ту-гайдов, ноу-хау-штук и конечно мороженого, все же душно
Причина обращения: