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

Войти
 
  Начало Форум WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  
  Просмотр сообщений
Страниц: [1] 2 3 ... 13
1  Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл? : Март 10, 2018, 20:59
Пробовал, сохраняет не правильно, размер файла увеличен в 2 раза, через каждый байт вставляет пустые символы.
2  Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл? : Март 10, 2018, 12:11
Строка это и есть файл (все его содержимое), содержимое этой строки я записываю в файл на диске (например png).
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() - считает длину корректно.
5  Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл? : Март 06, 2018, 14:04
Приходят правильные данные (тоесть: в BSTR хранится полностью корректный набор данных), но при записи их в файл подменяется значение с: "98", на: "3F".  Грустный
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 );
7  Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл? : Март 06, 2018, 11:55
Я имел в виду не COM-порт, это COM объект.  Крутой
Сам я ничего не аллоцирую, получаю готовую строку из библиотеки.
8  Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл? : Март 06, 2018, 10:37
Данные получаю из COM в виде BSTR строки.
9  Qt / Общие вопросы / Re: Как правильно записать wchar_t в бинарный файл? : Март 06, 2018, 10:20
Код
C++ (Qt)
const wchar_t *data = ...;
const size_t *dataSize = ...; // in bytes
 
QFile f;
QDataStream out(&f, QIODevice::WriteOnly);
out.writeRawData(reinterpret_cast<const char *>(data), dataSize);
 
Пробовал так. Все данные битые.
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. Данные успешно записываются в БД.
При чтении хочу определить, какие именно данные (бинарные или нет) лежат в этой ячейке. Как мне это определить?

Всем заранее спасибо!
13  Qt / Общие вопросы / Re: Помогите придумать регулярное выражение : Декабрь 15, 2016, 11:18
Спасибо за подсказку! Я про него совсем и забыл!  Веселый
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().
Никак не могу понять, в чем моя ошибка, что я делаю не так? Непонимающий Подскажите, кто знает...  Строит глазки

Заранее всем спасибо!
Страниц: [1] 2 3 ... 13

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