Просмотр сообщений
|
Страниц: [1] 2 3 ... 13
|
3
|
Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл?
|
: Март 08, 2018, 14:42
|
Если пишете в png - то надо писать с помощью тамошнего API, т.е. не просто "строка" (на деревню дедушке), а тег который читатели понимают, напр Title, Author, Description и др. Насколько я помню, там только латиница. Мне передается содержимое png файла, через BSTR строку, я пытаюсь сохранить эту строку в такойже png файл, при чем здесь тег Title, Author и т.д.
|
|
|
4
|
Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл?
|
: Март 06, 2018, 16:18
|
Докопался до того, что в toLocal8Bit() преобразовывается один единственный символ: "0x98" в: "0x63", по какой причине это происходит - выяснить пока не удалось. По поводу спецификации png и порядка следования байт - все в порядке, заголовок файла правильный. SysStringLen() - считает длину корректно.
|
|
|
6
|
Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл?
|
: Март 06, 2018, 13:07
|
При сохранении строки в файл, не правильно сохраняется 1 байт: вместо 98 записывается 3F (в HEX). Сейчас сохраняю так: const int iSize = SysStringLen( pngDATA ); pfIco->write( QString::fromWCharArray(pngDATA, iSize).toLocal8Bit(),iSize );
|
|
|
10
|
Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл?
|
: Март 06, 2018, 10:16
|
Не ясно, что требуется то? Сохранить png файл или строку в текстовом виде? Если файл, то QDataStream и не нужен C++ (Qt) QFile* pfIco = new QFile( "MyFile.png"); if( !pfIco->open( QIODevice::WriteOnly ) ) {...} const int iFileSize = SysStringLen( pngDATA ); pfIco->writeData( pngDATA, iFileSize ); pfIco->close(); delete pfIco; pfIco = nullptr;
Сохранить необходимо png файл. При попытке записать BSTR строку: pfIco->write( (char*)pngDATA, iFileSize ); данные сохраняются не корректно, png файл не читаем. Если сохранять так: pfIco->write( QString::fromWCharArray(pngDATA, iFileSize).toLocal8Bit(), iFileSize ); то в ряде случаев, некоторые файлы сохраняются не корректно, хотя присутствуют и правильные данные.
|
|
|
11
|
Qt / Общие вопросы / Как правильно записать wchar_t в бинарный файл?
|
: Март 06, 2018, 00:00
|
Всем доброго времени суток! Проблема в следующем: есть строка в wchar_t (тип BSTR), в ней находится содержимое png-файла (pngDATA). Пытаюсь сохранить содержимое в файл: QFile* pfIco = new QFile( "MyFile.png"); if( !pfIco->open( QIODevice::WriteOnly ) ) {...} const int iFileSize = SysStringLen( pngDATA ); QDataStream out(pfIco); out << QString::fromWCharArray(pngDATA, icoFileSize).toUtf8(); pfIco->close(); delete pfIco; pfIco = nullptr;
Содержимое сохраняется не корректно, пробовал писать в QDataStream так: QByteArray ba = QByteArray((char*)pngDATA, icoFileSize); out << ba; тоже безуспешно. Подскажите, кто знает, в чем ошибка?
|
|
|
12
|
Qt / Базы данных / Получение бинарных данных из Firebird
|
: Октябрь 26, 2017, 13:08
|
Всем доброго времени суток!
Подскажите, как можно определить, какой тип данных находится в конкретной ячейке БД Firebird? Когда записываю данные в таблицу, то использую QSqlQuery::bindValue(), с последним параметром = QSql::Binary. Данные успешно записываются в БД. При чтении хочу определить, какие именно данные (бинарные или нет) лежат в этой ячейке. Как мне это определить?
Всем заранее спасибо!
|
|
|
14
|
Qt / Общие вопросы / Помогите придумать регулярное выражение
|
: Декабрь 15, 2016, 00:36
|
Всем доброго времени суток! Просьба помочь с регулярным выражением: имеется строка, типа QString, в ней я использую метод remove(), в который можно передать регулярку. Из начала этой строки я хочу удалить первое вхождение символа, например: '@'. Как мне это сделать? Подскажите плиз... .
|
|
|
15
|
Qt / Общие вопросы / Вылет по памяти при использовании динамической библиотеки (MSVC2015+Qt5.7.0).
|
: Июль 26, 2016, 18:57
|
Всем доброго времени суток. Не могу разобраться в ситуации: имеется динамическая библиотека с несколькими экспортированными функциями. Для подключения этой библиотеки использую QLibrary, затем через QLibrary::resolve получаю указатель на экспортируемую функцию. Сама экспортируемая функция ничего не делает, кроме как создает и возвращает указатель на класс QDialog. Диалог создается и отображается вполне корректно, НО: есть другая экспортируемая функция, которая принимает на вход указатель на QDialog и пытается через delete разрушить этот объект. Так вот, каждый раз когда это происходит, программа вылетает со следующей диагностикой: HEAP CORRUPTION DETECTED: after Normal block (#3418) at 0x00D42708. CRT detected that the application wrote to memory after end of heap buffer. Причем этаже ошибка появляется, если я вместо явного удаления объекта через delete, вызову для него метод deleteLater(). Никак не могу понять, в чем моя ошибка, что я делаю не так? Подскажите, кто знает... Заранее всем спасибо!
|
|
|
|
|