Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.07.17;
Скачать: CL | DM;

Вниз

Как передать динамический массив битмапов.   Найти похожие ветки 

 
Дмитрий Белькевич ©   (2007-04-02 15:07) [0]

Нахожу примеры, как с помощью OLE передавать отдельные битмапы, но как передать несколько битмапов, заранее не зная их количество?
И клинет и сервер - мои.


 
umbra ©   (2007-04-02 15:53) [1]


> как передать несколько битмапов, заранее не зная их количество?

а как можно не знать количества? неужели нет никакого проверочного условия?


 
Дмитрий Белькевич ©   (2007-04-02 16:06) [2]

Клиентом дергается метод серверного интерфейса. Клиенту для сервера нужно передать несколько tbitmap. Заранее сказать (имеется в виду на этапе компиляции) невозможно. Т.е. в одном вызове метода может передаваться одна картинка, в следующем - 10. С одной картинкой всё просто - можно передать через параметр метода типа VARIANT (OleVariant), например, как массив байт - varByte (или как IPucture, не суть важно). Но как передать несколько картинок за один вызов - непонятно.
Пробовал создать двумерный OleVariant с типом varByte. Потом не могу до него достучаться - VarArrayLock не лочится, т.к. вторая размерность - не varArray.
Как создавать массив IPucture, не нашел. Вероятно, принципиально по-другому нужно делать. Как - не знаю.


 
Дмитрий Белькевич ©   (2007-04-02 16:07) [3]

>Заранее сказать (имеется в виду на этапе компиляции) невозможно.
Читать: Заранее сказать сколько tbimap будет передаваться (имеется в виду на этапе компиляции) невозможно.


 
tesseract ©   (2007-04-02 18:07) [4]


> Читать: Заранее сказать сколько tbimap будет передаваться
> (имеется в виду на этапе компиляции) невозможно.


Делай интефейс - заведи метод Get/SetBitmapCount - и всё, никаких художеств. И в цикле шурши битмапами.


 
Дмитрий Белькевич ©   (2007-04-02 22:33) [5]

Передать количество битмапов не проблема. Можно и в том же методе того же интерфейса. Но как в пределах одного вызова одного метода переслать сразу много битмапов? Критично, что бы эти все битмапы были объединены одним вызовом - иначе я бы, конечно, последовательно их передавал.

p.s. Спасибо за ответы.


 
atruhin ©   (2007-04-03 04:57) [6]

> можно передать через параметр метода типа VARIANT (OleVariant)
> , например, как массив байт

Ну а кто мешает как массив байт и передавать?
1 байт - кол-во битмапов.
2..XX - массив размеров или смещений битмапов (типа integer).


 
Дмитрий Белькевич ©   (2007-04-03 11:12) [7]

Да, я думал об этом. Хочется более красивое решение. Нашел IStorage. Возможно, это будет как раз оно...


 
Дмитрий Белькевич ©   (2007-04-03 22:26) [8]

Посмотрел IStorage. Честно говоря, думал, что структуры в памяти хранятся, а потом в файл по надобности сбрасываются. Однако, оказалось, что система просто информацию в файл сбрасывает, что не дает мне преимуществ, т.к. как раз сохранять файлы и не хотелось.

Всё таки, видимо, придется свою структуру передаваемого массива делать и передавать всё в одномерном массиве.
Если еще будут идеи готов выслушать и спасибо за ответы.



Страницы: 1 вся ветка

Текущий архив: 2011.07.17;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1302269300
johnjar
2011-04-08 17:28
2011.07.17
OpenGl GLine и GL_POINTS


15-1301902882
brother
2011-04-04 11:41
2011.07.17
Монитор не печатает и принтер не показывает...


2-1302637050
AlekVolsk
2011-04-12 23:37
2011.07.17
AnsiString to String в DelphiXE


15-1301435879
Германн
2011-03-30 01:57
2011.07.17
Непонятный глюк.


6-1239963464
HF-Trade
2009-04-17 14:17
2011.07.17
Как и с помощью чего создать SiteMap