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

Вниз

var in dll   Найти похожие ветки 

 
TUser ©   (2004-05-11 18:34) [0]

Такой вопрос. Есть статически подключаемая dll. Там есть процедура, в которую передаются по ссылке (через var) параметры в т.ч. динамические массивы. Процедура проводит некие расчеты и через эти параметры возвращает результат. Эта процедура вызывается из моей проги в неком обработчике, скажем Button1Click. Все нормально раюотает, но после завершения работы обработчика возникает ошибка "Invalid floating point operation". Можно пройтись отладчиком по библиотеке и по вызывающей процедуре, можно try"ев везде понаставить - все работает нормально, ошибка возникает именно при выходе из процедуры. При этом если ту же самую процедуру оформить в unit"е, то все работает нормально. Просветите меня, plz, в чем мб дело.


 
WebErr ©   (2004-05-11 18:37) [1]

На каком языке написана процедура внутри dll и как Вы её вызываете?


 
Mim1 ©   (2004-05-11 18:42) [2]

Important note about DLL memory management: ShareMem must be the
 first unit in your library"s USES clause AND your project"s (select
 Project-View Source) USES clause if your DLL exports any procedures or
 functions that pass strings as parameters or function results.


 
TUser ©   (2004-05-11 19:36) [3]

Написана на D7. Собственно это моя процедура.

ShareMem не используется. А он нужен для всех вообще динамических массивов, не только для строк, да?


 
OlegGashev ©   (2004-05-11 21:15) [4]

Используй указатели, и никаких ShareMem не нужно.


 
DrPass ©   (2004-05-11 22:11) [5]


> А он нужен для всех вообще динамических массивов, не только
> для строк, да

Да


 
Mim1 ©   (2004-05-12 01:18) [6]

[4] OlegGashev ©   (11.05.04 21:15)

Я бы сказал так "Четко контролируй явное распределение и не явное распределение памяти и sharedmem тебе не понадобится", хотя на самом деле считаю что для начинающего это достаточно сложно. Вот например string - указатель. После выходна за область видимости процедуры он умирает. ЕСли воспользоваться этим указателем после освобождение сами понимаете что произойдет. SharedMem устранить эту проблемму, и ряд подобных.


 
Polevi ©   (2004-05-12 07:49) [7]

не понимаю, почему все игнорируют COM сервера


 
TUser ©   (2004-05-12 07:55) [8]

Да там простая в принцыпе штука. В dll я упихал кучу всяких расчетов - зачем еще COM мутить?
Всем спасибо за ответы.


 
Polevi ©   (2004-05-12 07:56) [9]

COM мутить
этим все сказано

--
LMD


 
Goida ©   (2004-05-12 09:40) [10]


> Polevi

Дай, пожалуйста, примерчик постороения. Если не трудно.


 
Polevi ©   (2004-05-12 10:01) [11]

File/New/ActiveX Library + File/New/Automation Object


 
evvcom ©   (2004-05-12 10:09) [12]

[11] + литературу по COM почитать для понимания того, что делаешь.


 
Goida ©   (2004-05-12 13:25) [13]


> Polevi

А можно с помощью ActivX сделать MDI-форму, которая будет храниться отдельно от приложения?.. В D7 есть ActiveX From - это то, в чем нужно копаться?


 
Polevi ©   (2004-05-12 13:27) [14]

да



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

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

Наверх




Память: 0.49 MB
Время: 0.025 c
14-1083578926
тихий вовочка
2004-05-03 14:08
2004.05.23
Правильное написание для ОВИРа


4-1080995477
Yozh_Programmer
2004-04-03 16:31
2004.05.23
Какое сообщение юзать?


14-1083312818
Sour
2004-04-30 12:13
2004.05.23
XML+XSD


7-1081171966
X9
2004-04-05 17:32
2004.05.23
WMI


1-1083762693
mika
2004-05-05 17:11
2004.05.23
Rename