Page 2 of 3
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 4:11 am
by borr_1
К какому фрейму? к MSCFrame? так таймер и принадлежит этому классу - MSCFrame ты просто this пробовал? Или я чего-то не понял
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 11:04 am
by baytuch
Ой... На написал самого главного
Ребята, в общем, не компилится код, если фрагмент, где находится обработчик, имеет такой вид:
Code: Select all
void MSCFrame::OnTimer( wxTimerEvent& event ){
// wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
// wxT( "Сообщение от таймера" ), wxOK | wxICON_INFORMATION, this );
frame->SetStatusText(wxT("Test"));
// core(1, this);
};
/root/Desktop/dev/MSC/src/msc.cpp:75: error: 'frame' was not declared in this scope
Но, если так, то работает ( уже сегодня утром пробовал ):
Code: Select all
void MSCFrame::OnTimer( wxTimerEvent& event ){
// wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ),
// wxT( "Сообщение от таймера" ), wxOK | wxICON_INFORMATION, this );
// frame->SetStatusText(wxT("Test"));
core(1, this);
};
Code: Select all
//Командный процессор
void core(int com, MSCFrame *frame){
if ( com == 0 ){
// wxSleep(10);
frame->SetStatusText(wxT("Test"));
// wxMessageBox( wxT( "This is a wxWidgets Hello world sample" ), wxT( "About Hello World" ), wxOK );
};
if ( com == 1 ){
frame->SetStatusText(wxT("Test_timer"));
};
};
Немного не пойму...
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 11:35 am
by borr_1
У тебя рация не на лампах, а на броневике!
Нужно пробовать так
Code: Select all
this->SetStatusText(wxT("Test"));// или просто SetStatusText(wxT("Test"));
Если хочешь через frame его нужно вынести в глобальную переменную.
ЗЫ Этот вопрос к самим wxWidgets никакого отношения не имеет - это вопрос самого языка.
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 12:03 pm
by baytuch
Заработало, спасибо большое...
Я где-то читал, что глобальные указатели — это плохо. Также у меня возникают проблемы, когда я пытаюсь объявить его, как "глобальный" — ошибка сегментации, падение приложения, когда срабатывает событие. Сделать по примеру,который мне привел Mojo, но проблема не пропала... Предполагаю, что это как-то связано с резервирование памяти под объект, но это вопрос уже точно по плюсах. Пока не критично... ( весной писал небольшую программку для работы с модемом, то такое частенько наблюдал ( начитался на эту тему )).
Просто, я изначально думал, что это как-то связано с наследование классов ( учитывалось, когда формировался пост )... А что, нельзя задавать вопросы про "чистый" C++, если дело все равно касается программирования на wxWidgets? Просто, я ранее не особо активно использовал классы, как инструмент программирования, и мне немного сложно, а фреймворк — библиотека классов.
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 12:14 pm
by borr_1
baytuch wrote:А что, нельзя задавать вопросы про "чистый" C++, если дело все равно касается программирования на wxWidgets?
Можно... я так на всякий случай... пнул слегка.
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 12:38 pm
by baytuch
Понял, учтем...
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Aug 28, 2012 11:43 pm
by baytuch
Ребята, добрый день.
Извините, но я опять застрял. Пишу уже http - клиент. К слову, как раз с ним все нормально, но данные я получаю виде XML - документа... Немного полазил по мануалу и, к счастью, обнаружил, что wxWidgets имеет встроенный парсер, но воспользоваться им не могу... Судя по докам, этот класс способен работать с файлами и с потоком stream, который у меня есть... Но при попытке "подбросить" его парсеру, даже не компилится код -- компилер заявляет, что я пытаюсь подбросить не тот тип данных... Что еще скажу: спасайте, не работает... Конечно, мой сервер не генерит там больших документов, что не мешает сделать парсер "руками", но все же... Еще, как вариант, можно воспользоваться форматом "JSON" ( тоже реализовал, как резервный вариант ).
Code: Select all
#include <wx/wx.h>
#include <wx/socket.h>
#include <wx/sstream.h>
#include <wx/protocol/http.h>
#include "http_client.h"
#include "extern_variables.h"
#include <wx/xml/xml.h>
bool socket(){
wxHTTP get;
get.SetHeader(wxT("Content-type"), wxT("text/html; charset=utf-8"));
get.SetHeader(wxT("User-Agent"), wxT("MSC"));
get.SetTimeout(10);
if ( get.Connect(wxT("vps.my-services.km.ua")) == false ){
return false;
};
wxInputStream *stream = get.GetInputStream(wxT("/api/index.php?com=time&format=xml"));
char* data = new char[1024];
stream->Read(data, 1024);
sys_string[10] = wxString::FromUTF8(data, 1024);
//XML-parser
/*
wxXmlDocument *xmlDoc;
wxXmlNode *root_node, *tmp_node;
xmlDoc = new wxXmlDocument();
xmlDoc->Load(stream, wxT("UTF-8"), wxXMLDOC_NONE);
root_node = xmlDoc->GetRoot();
*/
return true;
};
*как вы можете видеть, я строчки парсера закомментировал. При компиляции выдает:
/root/Desktop/dev/MSC/src/http_client.cpp:53: error: conversion from 'wxInputStream*' to 'const wxString' is ambiguous
Re: Осваиваю библиотеку. Сложности.
Posted: Wed Aug 29, 2012 5:03 am
by borr_1
Конечно кто ж тебе сказал что в ImputSteam просто так можно строку засунуть. И вообще не понятно чего ты хочешь
Вот пример из доков по wxURL.
Code: Select all
wxURL url("http://a.host/a.dir/a.file");
if (url.GetError() == wxURL_NOERR)
{
wxInputStream *in_stream;
in_stream = url.GetInputStream();
// Then, you can use all IO calls of in_stream (See wxStream)
}
Может нужно что-т типа wxInputStream *stream = get.GetInputStream().
Обрати внимание wxHTTP wxFTP не работают через Proxy. Хотя в wiki есть SetProxyMode но что с ним дальше делать я так и не понял
http://wiki.wxwidgets.org/WxHTTP
Re: Осваиваю библиотеку. Сложности.
Posted: Wed Aug 29, 2012 10:59 am
by baytuch
Задача: подключится к хосту, который работает по протоколу HTTP 1.1; выполнит GET - запрос; получить документ ( XML - документ ); распорсить и отправить в extern-массив, возвратив true ( false - в случае ошибки )...
Но у меня практически все, как на этом примере. Забыл закрыть соединение, но з запросами все норм, так как данные я получаю ( это же заготовка )... Собсно вопрос в другом...
--------------------------------
"Звездочки" не хватало...
Code: Select all
xmlDoc->Load(*stream, wxT("UTF-8"), wxXMLDOC_NONE);
-------------------------------
Прокси мне не нужно, честно говоря, а вот SSL — очень даже... Но пока не просветлялся на эту тему...
Народ, в общем, как-то выходит чет понемногу... Спасибо за подсказки, сам, наверное, еще бы долго гостил в Гугляндии
Re: Осваиваю библиотеку. Сложности.
Posted: Thu Aug 30, 2012 2:16 am
by baytuch
Уже довольно давно хотел немного разобраться в этой библиотеке... Ну, вот... Свершилось... Также позвольте показать, шо же я там такое чудю
Можно называть "Выкидышем"
Это заготовка. Стояла задача: разобраться... Далее нужно будет продумать логику, дописать API... Тяжело с ужении — легко в бою, однако... Кста, под Виндовс не компилится... Шот упирается на wxHTTP. На больную голову делал — потом посмотрю...
Source:
http://www.my-services.km.ua/files/MSC/MSC_0.1.zip
*предполагаю, шо эта шмаказявка в конце — это символ перевода строки...
Всё!..
Re: Осваиваю библиотеку. Сложности.
Posted: Tue Sep 04, 2012 8:42 pm
by baytuch
Также разобрался с проблемой компиляции под виндовс. Проблем была более чем адекватной — линковщику не были указаны все dll-файлы. Я их добавил и всё сразу собралось и запустилось...
List libs: libwxbase28ud_net.a, libwxbase28ud_xml.a
Теперь моя прога работает на двух осях, чему очень рад!..
Windows XP SP2:
Re: Осваиваю библиотеку. Сложности.
Posted: Wed Sep 05, 2012 4:07 pm
by Mojo
baytuch wrote:Также разобрался с проблемой компиляции под виндовс. Проблем была более чем адекватной — линковщику не были указаны все dll-файлы. Я их добавил и всё сразу собралось и запустилось...
List libs: libwxbase28ud_net.a, libwxbase28ud_xml.a
Теперь моя прога работает на двух осях, чему очень рад!..
Windows XP SP2:
Не плохо для начала и уж совсем роскошно для новичка.
Re: Осваиваю библиотеку. Сложности.
Posted: Wed Sep 05, 2012 4:15 pm
by Mojo
Хотя посмотрел код, какой уж там новичок... может быть новичок в wxWidgets, но не в программировании это точно
Re: Осваиваю библиотеку. Сложности.
Posted: Wed Sep 05, 2012 10:50 pm
by baytuch
Не ожидал... Спасибо...
Нашел в этой демке серьезный ляп, который приводит краху приложения... Вообще не знаю, как оно могло работать с таким багом?.. ( сорцы перезалил )
Re: Осваиваю библиотеку. Сложности.
Posted: Thu Sep 06, 2012 10:26 pm
by ONEEYEMAN
baytush,
Dlya togo chtoby obschatsya s internetom prosche i luchshe ispolzovat biblioteku "cURL".
wxHTTP ochen primitiven.
cURL - biblioteka obschenija s set'ju (ljuboj). Besplatnaja i s otkrytym kodom. V obraschenii prosta.
Sorry, pishu s raboty, a nas zdes vse tolko po angelski...
Spasibio.