Russian Qt Forum
Май 05, 2024, 22:22 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 [3] 4 5 ... 66
31  Qt / Базы данных / Re: QODBC и кодировки : Февраль 19, 2014, 06:00
Приведите примеры кракозябр и правилльной их расшифровки, что б посмотреть обратима ошибка или нет.
32  Qt / Работа с сетью / Re: передать файл через QTcpSocket : Февраль 18, 2014, 14:39
Сравните их побайтно, где несовпадение.
Вижу варианты
а) bArray = pSocket.readAll(); - можете кроме длины и имени и часть файла прихватить уже.
б) pSocket->close(); - возможно сокет закрывается раньше, чем вы всё считали. Не помню точно в Qt нормально ли тут на принимающей стороне всё считаться.

Ну и вот это точно ошибка:
Код
C++ (Qt)
free((void*)ch);
Хотя к вашей проблеме едва ли относится.
33  Qt / XML / Разделение xml : Февраль 18, 2014, 14:23
Есть некоторый протокол, который передаёт сообщения в формате xml а-ля:
Код
XML
<?xml version='1.0' encoding='utf-8'?>
<ping />
Получаю QDomDocument используя bool QDomDocument::setContent(const QString & text, bool namespaceProcessing, QString * errorMsg = 0, int * errorLine = 0, int * errorColumn = 0).
Всё бы ничего, но транспортный протокол TCP соответственно сообщения может нарезать на кусочки лил склеивать.

С нарезанием ещё как-то справиться можно - если произошла ошибка, значит возможно ещё не целиком пришло сообщение и надо ещё подождать.

А если наоборот произошло склеивание а-ля:
Код
XML
<?xml version='1.0' encoding='utf-8'?>
<message id="1" />
<?xml version='1.0' encoding='utf-8'?>
<message id="2" />
Такой xml не распарсится, так как «<?xml version='1.0' encoding='utf-8'?>» может быть только вначале.
Есть вариант, конечно, резать самому.
В простом варианте просто искать <?xml и там где оно встретилось - новое сообщение.
В большинстве случаев оно сработает за исключением извращений типа:
Код
XML
<?xml version='1.0' encoding='utf-8'?>
<text>
 Processing instruction: <![CDATA[<?xml version='1.0' encoding='utf-8'?>]]>
</text>
Если пытаться таких штук избегать - считай полноценный парсинг Xml делать надо - чего б совсем не хотелось бы.

Соответственно вопрос - есть ли какие-то классы в Qt для парсинга потока Xml документов?
34  Qt / Общие вопросы / Re: Вывод русских символов в консоль : Февраль 17, 2014, 22:40
кириллицу и прочие не-ASCII символы лучше вообще не использовать в коде
Ну не используете вы кириллицу в коде, а приходит она из транслейта. Вопроса кодировки консоли это же никак не меняет.
35  Qt / Работа с сетью / Re: передать файл через QTcpSocket : Февраль 14, 2014, 08:21
Та же беда. Разваливается передача.
Группа программистов-экстрасенсов спешит вам на помощь.
36  Qt / Вопросы новичков / Re: как вызвать функцию или сигнал послать из другого класса? : Февраль 10, 2014, 07:12
и там же в нем при его создании(на данный момент) пробую эмитить сигнал test_message()
собсно ничего не происходит. даже если я эмитирую сигнал в первом классе
А что по вашему мнению должно прозойти?
Если вы эмитите сигнал внутри конструктура, а коннект вызываете после него, то тот сигнал ничего вызвать и не должен, так как на момент эмита коннекта ещё нет.
37  Qt / Вопросы новичков / Re: Странности MDI : Февраль 08, 2014, 23:17
su->setWindowFlags(windowFlags()  
   || Qt::WindowTitleHint | Qt::WindowSystemMenuHint);
Первое или логическое вместо побитового.
Тем самым сбрасываете флаг Qt::SubWindow (и возможно ещё какие-то нужные) и всё начинает глючить.
38  Qt / Вопросы новичков / Re: Компиляция и сборка : Январь 23, 2014, 22:53
Если вам надо что-то работающее везде и всегда, то подойдет Java.
хочешь собирать бинарники для разных ОС из одной — ставь кросс-компилятор. иначе иди на Java.
Не знаю, может мне очень не везло на разработчиков, но те гуёвые Java-программы с которыми я сталкивался оставили у меня привкус жутко бесящей тормознутости (ну и сильно ненативный вид я тоже отношу к минусам).
39  Qt / Вопросы новичков / Re: Компиляция и сборка : Январь 23, 2014, 22:37
В мелкософтской студии получался .exe весом 10 Кб и всё.
Ага, попробуйте его запустить на компьютере, где не стоит студия или Visual C++ Redistributable Package.
Но в целом, да, в Qt размер дистрибутива простенькой программы получается большим (если позаморачиваться со статической сборкой, отключением ненужного функционала, upx'ом пройтись и т.п.) или просто неприлично огромным (если этого не делать).

Почему так сложно?
Потому что жизнь - боль.  Злой
40  Qt / Вопросы новичков / Re: Вопрос по ссылкам и указателям. : Январь 23, 2014, 09:39
Что значит нет? А куда он делся? Вы имеете в виду, что автор пропустил в реализации методов
Код:
Foo::
?
И ещё не . а ->
41  Qt / Работа с сетью / Re: QTcpServer v4/v6 : Январь 23, 2014, 07:56
Вы меня разочаровываете...

void QAbstractSocket::connectToHost(const QString & hostName, quint16 port, OpenMode openMode = ReadWrite, NetworkLayerProtocol protocol = AnyIPProtocol) [virtual]
Увы, в 4.8 такого параметра нет. А на 5-ку мы ещё не перешли.

Если в listen указать ipv6 адрес, то сокет будет слушать только ipv6, если ipv4, то только ipv4.
Ну мне надо не с конкретного ip коннекты получать, а с любого.
Для Qt5 вероятно подойдут QHostAddress::AnyIPv4 и QHostAddress::AnyIPv6.
42  Qt / Работа с сетью / QTcpServer v4/v6 : Январь 22, 2014, 22:25
Есть ли возможность заставить QTcpServer принимать соединения только по IPv4? А по IPv6? Я понимаю, что могу уже в созданном сокете посмотреть протокол и дропнуть если не тот, который нужнен, но всё же вдруг есть вариант такие подключения вообще не принимать.

Ну и аналогичный вопрос с другой стороны. Если есть QTcpSocket и я делаю connectToHost не по ip, а по доменному имени, то есть ли возможность задать версию ip протокола или надо в «ручную» ресолвить доменное имя и коннектиться уже только по ip нужного типа?
43  Qt / Работа с сетью / Re: 2 пакета сливаются в один : Январь 15, 2014, 09:14
Из-за сериализации через QDataStream? Так это и ежу понятно.
Да это не такая уж проблема. Эта сериализация нормально документирована. Повторить её на другом языке в нужном объёме не такая уж и проблема.
44  Qt / Вопросы новичков / Re: ........ завершился с кодом -1073741819 : Январь 09, 2014, 10:43
я как понял, что отрицательное число, судя по литературе - это деление 0
Неправильная у вас литература. -1073741819, оно же 0xc0000005 - access violation, возникает чаще всего при обращении к уже удалённом или ещё не созданному объекту.
45  Qt / Работа с сетью / Re: Подключение к Telnet серверу : Январь 06, 2014, 18:21
Код:
 QTextCodec *codec = QTextCodec::codecForName("UTF-8");
    QTextCodec::setCodecForLocale(codec);
    str = codec->toUnicode(buffer);
"��%��\001��\003��'��\037��\000��\000"

Должна быть вот такая строка

Welcome to Microsoft Telnet Service

login:
Сильно сомневаюсь, что в Microsoft Telnet Service кодировка utf-8, скорее всего cp866 или cp1251.
Код:
 QTextCodec *codec = QTextCodec::codecForName("cp866");
    str = codec->toUnicode(buffer);
Страниц: 1 2 [3] 4 5 ... 66

Страница сгенерирована за 0.104 секунд. Запросов: 23.