Вот нашел, имеется функция, но файл symbols.raw не читается (((((((((((((((((((((((
int GetSymbols(string &SymbolsList[])
{ // Открываем файл symbols.raw int hFile = FileOpenHistory("symbols.raw", FILE_BIN|FILE_READ); if(hFile < 0) return(-1); // Определяем количество символов, зарегистрированных в файле int SymbolsNumber = FileSize(hFile) / 1936; ArrayResize(SymbolsList, SymbolsNumber); // Считываем символы из файла for(int i = 0; i < SymbolsNumber; i++) { SymbolsList[i] = FileReadString(hFile, 12); FileSeek(hFile, 1924, SEEK_CUR); } // Возвращаем общее количество инструментов return(SymbolsNumber);
}
Я бы, как минимум, два вопроса задал:
1. Отчего Вы решили, что проблема в том, что этот файл не читается? К ответу желательно приложить системные сообщения.
2. Когда Вы это обнаружили и как давно непосредственно перед этим все было хорошо?
Вот нашел, имеется функция, но файл symbols.raw не читается (((((((((((((((((((((((
int GetSymbols(string &SymbolsList[])
}
Может стоит добавить опцию FILE_SHARE_READ (а то и FILE_SHARE_WRITE)? По крайней мере в справке рекомендуют указывать принудительно режим совместного доступа к файлу, что в старой версии языка было необязательно.
Спасибо, за помощь. Это мой старый советник, и года 2 назад а может и больше он работал ))). Теперь же как я понял, после 600 билда из-за расположения папок такая возможность исчезла. Когда я делаю отладку то на строке: int hFile = FileOpenHistory("symbols.raw", FILE_BIN|FILE_READ); значение hFile возвращается = -1. ((( Все дальше советник не работает ((( Поделитесь пожалуйста или подскажите как возможно обойти данную проблему? Не хотелось бы менять расположение файлов. Меня устаивает папка AppData. Спасибо.
Если советник мой и по-прежнему мне интересен, я бы просто переписал код от корки до корки. Нельзя без разминки больше двух лет :)
добавил в конце функции: FileClose(hFile);
все заработало. О как)))!!!
Спасибо всем за помощь.
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Есть код, типовой функции init.
Смысл в том, что в этой функции собирался массив возможных валютных пар.
Валютные пары я описываю в глобальной переменной через знак ";".
Но проблема в том, что ранее работавшая функция теперь не работает, т.к. не открывается файл "symbols.raw".
В чем может быть проблема? Понимаю, что слишком замысловатый вопрос но все же, может кто из профессионалов знает в чем причина?
Спасибо.
Вот код, функции:
void init() {
// найдем все валютные пары в терминале
string smbs[];
int hFile = FileOpenHistory("symbols.raw", FILE_BIN|FILE_READ); if(hFile<0) return(-1);
int nSmb = FileSize(hFile)/1936;
ArrayResize(smbs, nSmb);
for(int i=0; i<nSmb; i++) { smbs[i] = FileReadString(hFile, 12); FileSeek(hFile, 1924, SEEK_CUR); }
// прочитаем строку
int k,mk; string buf;
for(i=0;i<20;i++) {
int dp=StringFind(symbols,";",mk);
if(dp==-1) {
buf=StringSubstr(symbols,mk,StringLen(symbols)-mk);
if(buf!="") {
for(k=0;k<nSmb;k++) {
if(buf==smbs[k]) {
symbnum++; ArrayResize(symb,symbnum);
symb[symbnum-1]=buf;
break;
}
}
}
break;
}
buf=StringSubstr(symbols,mk,dp-mk);
for(k=0;k<nSmb;k++) {
if(buf==smbs[k]) {
symbnum++; ArrayResize(symb,symbnum);
symb[symbnum-1]=buf;
break;
}
}
mk=dp+1;
}
ArrayResize(TimeS,symbnum);
return;
}