Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TMemoryStream + dll [D7, 2003]


1иван ©   (2008-02-11 21:51:00) 

Мне нужно из программы передать TMemoryStream в библиотеку dll и вернуть из библиотеки другой TMemoryStream с результатом.

Входящий размер TMemoryStream не равен возвращаемому.

Как лучше поступить?

Спасибо.


ketmar   (2008-02-12 00:34:00) [1]

>[12] DVM © (2008-02-11 23:06:00)
>иногда можно и без ShareMem и пакетов обойтись

ну вон же я дал ссылку в [5]. один модуль, no runtime penalties, no extra DLLs. дёшево и сердито. %-)

---
Understanding is not required. Only obedience.


DVM   (2008-02-11 23:06:00) [2]


> Leonid Troyanovsky ©   (11.02.08 22:59) [11]

Это да, поэтому размер TMemoryStream переданного в dll внутри нее менять нельзя. А вот содержимое можно.

Но, учитывая

> Входящий размер TMemoryStream не равен возвращаемому.

Это не подходит.

Я ни в коем случае не агитирую за такой метод работы, просто иногда можно и без ShareMem и пакетов обойтись.


Leonid Troyanovsky   (2008-02-11 22:59:00) [3]


> DVM ©   (11.02.08 22:53) [10]

> Не понял вот эту фразу.

Дельфийский ММ в длл может и перераспределить память.

--
Regards, LVT.


DVM   (2008-02-11 22:53:00) [4]


> а может - изменить.

Не понял вот эту фразу.


Leonid Troyanovsky   (2008-02-11 22:48:00) [5]


> DVM ©   (11.02.08 22:41) [8]

> Именно TMemoryStream проблем скорее всего не вызовет при
> передаче в dll.

Вот те и - здрасте.
Как же не вызовет, а может - изменить.

--
Regards, LVT.


DVM   (2008-02-11 22:41:00) [6]

Именно TMemoryStream проблем скорее всего не вызовет при передаче в dll.
Даже ShareMem не понадобится. Но так делать все равно не стоит.

Вот тут экспериментировали уже:

http://forum.sources.ru/index.php?showtopic=192689&view=showall


Anatoly Podgoretsky   (2008-02-11 22:37:00) [7]

> 1иван  (11.02.2008 22:08:02)  [2]

Sharemem не требуется, а вот от ДЛЛ надо отказаться, заменить на BPL


Leonid Troyanovsky   (2008-02-11 22:30:00) [8]


> 1иван   (11.02.08 22:17) [4]

> сам не уверен как поступить. Избежать использование dll
> не удастся.

Где одна - там и две.
Какая нах разница.

--
Regards, LVT.


ketmar   (2008-02-11 22:22:00) [9]

>[2] 1иван (2008-02-11 22:08:00)
http://www.google.com/search?client=opera&rls=en&q=fastsharemem&sourceid=opera&ie=utf-8&oe=utf-8

---
Understanding is not required. Only obedience.


1иван   (2008-02-11 22:17:00) [10]

Я знаю про этот плохой совет, поэтому и спрашиваю, т.к. сам не уверен как поступить. Избежать использование dll не удастся.


Leonid Troyanovsky   (2008-02-11 22:13:00) [11]


> 1иван   (11.02.08 21:51)  

> Как лучше поступить?

http://www.podgoretsky.com/DM/BadTips.html#BT-03


> На самом деле хотелось бы избежать использования sharemem
> - без дополнительной библиотеки.

Для избежания использования дополнительной библиотеки
надо избегать использование дополнительных библиотек.

--
Regards, LVT.


1иван   (2008-02-11 22:08:00) [12]

На самом деле хотелось бы избежать использования sharemem - без дополнительной библиотеки.


ketmar   (2008-02-11 22:04:00) [13]

так и поступать. не забыть только uses sharemem.

---
Understanding is not required. Only obedience.


Наверх

Титульная страница Поиск, карта сайта Написать письмо