crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Буфер для обмена между классами
Sokoloff
  опции профиля:
сообщение 16.4.2009, 19:32
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Вот подскажите как лучше сделать.

Есть 2 класса один генерит постскрипт, и передает его во второй класс, которй рендерит этот ps с помощью ghostscript.
Вопрос в том, как лучше передавать постскрипт, что использовать в качестве буфера.

Варианты QString и QByteArray я сразу отверг, т.к постскрипт в первом классе генериться по частям (отельно заголовок, отдельно тело и.т.д.) и общий размер я заранее не знаю, а перевыделять память при каждом добавлении IMHO это не хорошо.

Вариант с QStringList вроде очевиден, класс специально создан для хранения больших текстовых данны. Но, внутри у него QString, т.е. используется UTF16, а postscript это ASCII, ghostscript тоже принимает char*, соответственно имеем лишний расход памяти, и ненужное преобразование ASCII->UTF16->ASCII. Не аккуратненько как-то.

Можно использовать QList<QByteArray>, вроде никаких проблем, но не так очевидно как с QStringList.

Еще есть вариант (и он, даже, практически готов), это не использовать буфер вообще, а внутри первого класса, а для каждого кусочка постскрипта вызывать метод фторого класса и передавать в него этот кусок. Но что-то мне кажеться что это лишнее усложнение логики.

Вот поскажите как лучше сделать, что использовать в качестве буфера, или это все мелочи и я просто парю себе мозг?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Sokoloff
  опции профиля:
сообщение 17.4.2009, 12:14
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 237
Регистрация: 1.4.2009
Из: Москва
Пользователь №: 654

Спасибо сказали: 50 раз(а)




Репутация:   11  


Гигабайтов быть не может, это все-таки рендер постскрипта.
Временный файл, имеет смысл использовать для хранения данных, получили данные, сохранили в файл и некоторое время их используем. У меня же, хранения нет: нажали на кнопку, прочитали одну или несколько PS страниц, обработали, передали в рендер, и временный файл здесь IMHO лишний.
Всем спасибо за ответы, решил остановиться на QBuffer, и не забивать себе голову.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 7.5.2024, 11:28