![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DLL и её вызовы [D7]
0x00bin © (2007-09-26 17:25:00)У меня есть отдельная dll библиотека, в одной из процедур на вход подается запись с числовыми переменными и WideString (ShareMem не использую), эта запись передается по ссылке (var) и в этой процедуре переменные записи меняются.
Например: .WideString := .WideString + IntToStr(Random(255)) + #10;
А в приложении я динамически загружаю эту библиотку, забираю адрес для вызова процедуры.
В приложении есть массив простых классов. Если рассмотреть работу отдельного класса - то она заключается в вызове процедуры из dll по известному адресу и показу результатов.
Вопрос такой: я формирую этот массив классов, все создаю и они все начинают в результате работы взаимодействовать с dll, что произойдет? Реально ли сделать их работу в таком режиме?
Сергей М. (2007-09-27 09:38:00) [1]
> думал, что под каждый созданный в массиве класс нужно jnltkmyj
> загружать одну и ту же dll
В определенных случаях это м.б. вполне оправданным решением.
0x00bin (2007-09-27 09:32:00) [2]
> Так классов или объектов (т.е. экземпляров некоего одного
> и того же класса или неких разных классов) ? Определись
> уже, это разные вещи...
Экземпляров одного и того же класса.
Сергей М. (2007-09-27 09:17:00) [3]
> Опять же есть массив классов
Так классов или объектов (т.е. экземпляров некоего одного и того же класса или неких разных классов) ? Определись уже, это разные вещи...
> у меня единственная загрузка dll а дальше я просто передаю
> в классы адрес вызова из dll. Это нормально?
Для однопоточного приложения на первый взгляд это вполне нормально.
0x00bin (2007-09-27 09:09:00) [4]И про мой вопрос с dll, а же думал, что под каждый созданный в массиве класс нужно jnltkmyj загружать одну и ту же dll. А у меня единственная загрузка dll а дальше я просто передаю в классы адрес вызова из dll. Это нормально?
0x00bin (2007-09-27 09:06:00) [5]Ну не знаю, поэтому и спрашиваю. Я далеко не профи.
Задам ещё вопрос не в тему. Опять же есть массив классов. И есть внешняя функция (которая находится вне класса), и все начинают её вызывать.
А если я эту внешнюю функцию внесу в класс. Чем поведение изменится в этих двух ситуациях? Т.е. во втором случае в каждом своя функция, а в первом общая.
Сергей М. (2007-09-27 08:46:00) [6]
> не думал, что у меня получится такое всзимодействие, когда
> несколько классов одновеременно обращаются к библиотеке
А какая разница - один или несколько классов ?
0x00bin (2007-09-27 08:42:00) [7]А в остальном будет нормальное функционирование? Я просто не думал, что у меня получится такое всзимодействие, когда несколько классов одновеременно обращаются к библиотеке...
Сергей М. (2007-09-27 08:31:00) [8]Точнее в этот раз засаду ты минуешь, но как только изменишь WideString на String и "числовые переменные" на данные с управляемым временем жизни, проблемы тебе будут обеспечены)
Сергей М. (2007-09-27 08:19:00) [9]
> ShareMem не использую
> в этой процедуре переменные записи меняются
Здесь тебя ждет засада, если взаимодействующие модули не используют один и тот же экз-р RTL.
Вася Правильный (2007-09-26 18:53:00) [10]
> как это может повлиять на мою ситуацию
прямо
просто не будет работать
0x00bin (2007-09-26 18:37:00) [11]А что в этом плохого? И как это может повлиять на мою ситуацию, ну буду использовать PChar?
Вася Правильный (2007-09-26 17:53:00) [12]
> WideString (ShareMem не использую)
мазохизт? любитель граблей?