Буфер для обмена между классами |
Здравствуйте, гость ( Вход | Регистрация )
Буфер для обмена между классами |
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. Еще есть вариант (и он, даже, практически готов), это не использовать буфер вообще, а внутри первого класса, а для каждого кусочка постскрипта вызывать метод фторого класса и передавать в него этот кусок. Но что-то мне кажеться что это лишнее усложнение логики. Вот поскажите как лучше сделать, что использовать в качестве буфера, или это все мелочи и я просто парю себе мозг? |
|
|
Litkevich Yuriy |
16.4.2009, 19:36
Сообщение
#2
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ну не знаю толком что у тебя и как, рас уж вопрос возник, то навеное есть тому причина.
В качестве промежуточного хранилища могу ещё назвать QTemporaryFile, кажется так называется |
|
|
Sokoloff |
16.4.2009, 19:56
Сообщение
#3
|
Участник Группа: Участник Сообщений: 237 Регистрация: 1.4.2009 Из: Москва Пользователь №: 654 Спасибо сказали: 50 раз(а) Репутация: 11 |
ну не знаю толком что у тебя и как, рас уж вопрос возник, то навеное есть тому причина. В качестве промежуточного хранилища могу ещё назвать QTemporaryFile, кажется так называется Да нет, никаких особых причин нет, оптимизацией я пока еще не занимался, хотя и особых тормозов не видно. Это "по молодости и от излишнего усердия"©, т.е. маловато опыта и перфекционизм терзает Ладно по другому задам вопрос, есть в QT какой-то стандартный/распространенный метод передачи большого блока (до 1 мегабайта) не юникодного текста. |
|
|
Текстовая версия | Сейчас: 28.11.2024, 23:15 |