В шоке от напряжности программирования на C++ - страница 4

 

Проблема оказалась в неправильной передаче указателя на память при вызове функции из Form1.h, описанной в news.h . Вот что в конце вышло: http://forex-news.uuuq.com/DailyFXCalendar.zip

Кстати, на написание этого же кода с нуля на си шарпе ушло часа четыре и всего 200 строк кода.

P.S.Приятно было бы услышать любую критику по поводу интерфейса, за исключением заявлений вроде "вы это делаете себе же во вред".

 

Все Stream'ы нужно закрывать явно.

Поэтому в конце Download_Calendar нужно вызвать

responseStream.Close();
 
GarF1eld >>:

Все Stream'ы нужно закрывать явно.

Поэтому в конце Download_Calendar нужно вызвать

Исправил, спасибо!

 

#include <string>
#include <vector>

//Объявлена структура
typedef struct
{
std::string Symbol;
std::string Day;
std::string Text;
} news;



std::vector<news> list;

//Далее ф-ция мейн, в которой идет вызов вот такой функции:
void AnalizeBuffer()
{
news n;
n.Text = "111111";

list.push_back(n);

//дальше по смыслу пиши что хочешь
}


int _tmain(int argc, _TCHAR* argv[])
{
AnalizeBuffer();
return 0;
}

Так будет безопасней и удобочитаемый код

 

std::string Prepare_News( int index)

{

std::string tmp_char;

tmp_char += (news_list[index].Time + " " );

tmp_char += (news_list[index].Text + " " );

tmp_char += (news_list[index].Previous + " " );

tmp_char += (news_list[index].Forecast + " " );

return tmp_char;

}

std::string Download_page( char * adress)

{

//Записываем страницу adress в буффер buffer

char buffer[500];

std::string reslt = std::string();

DWORD bytes_read;

HINTERNET h_inet=InternetOpenA( "Microsoft Internet Explorer",INTERNET_OPEN_TYPE_DIRECT,NULL,NULL,NULL);

HINTERNET h_file=InternetOpenUrlA(h_inet,adress,NULL,0,0,0);

do {

memset( buffer,0, sizeof (buffer) );

InternetReadFile(h_file,buffer, sizeof (buffer),&bytes_read);

if (bytes_read != 0)

reslt += buffer;

}

while (bytes_read != 0);

//Ф-ция вовращает буфер, содержащий веб-страницу

return reslt;

}

Это я думаю правельней

 

Наверно давно пора завести ветку по "сопутствующим" MQL языкам и вопросами по работе с ними.

У меня тоже воросец созрел: А не подскажет ли уважаемый коллективный разум, как будет правильно передать в ДЛЛ на Си массив таймсерию? Посредством кокого-то промежуточного массива? Передавать ссылку или сам массив? Как правильнее? Может кто схематично обрисует?

 
Figar0 >>:

У меня тоже воросец созрел: А не подскажет ли уважаемый коллективный разум, как будет правильно передать в ДЛЛ на Си массив таймсерию? Посредством кокого-то промежуточного массива? Передавать ссылку или сам массив? Как правильнее? Может кто схематично обрисует?

Для чего? Спрашиваю, потому что от этого зависит ответ.

 
TheXpert писал(а) >>

Для чего? Спрашиваю, потому что от этого зависит ответ.

Похоже я был прав, когда подумал что это не так просто)

Обрабатывать этот массив в этой самой ДЛЛ, грубо говоря, в ДЛЛ функция в которую надо передать все цены клоузе с сотворения мира, многократно их там обработать и вернуть в советник результат просто одно double....

 
Figar0 >>:

Похоже я был прав, когда подумал что это не так просто)

Для ссылки на массив и просто массива разные способы передачи.

Обрабатывать этот массив в этой самой ДЛЛ, грубо говоря, в ДЛЛ функция в которую надо передать все цены клоузе с сотворения мира, многократно их там обработать и вернуть в советник результат просто одно double....

Проект для 2005 студии Вас устроит? Сейчас решения нет. Пороюсь дома или набросаю как появится время.

 
TheXpert писал(а) >>

Проект для 2005 студии Вас устроит? Сейчас решения нет. Пороюсь дома или набросаю как появится время.

Однозначно учтроит. Спасибо.

Причина обращения: