Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.044 c
14-1083737054
Goida
2004-05-05 10:04
2004.05.23
Как пишется рекомендательное письмо?


6-1080730866
tRiNEX
2004-03-31 15:01
2004.05.23
Перехват данных.


1-1083949911
LAnd
2004-05-07 21:11
2004.05.23
Переменные в DLL


1-1084075854
glGLU
2004-05-09 08:10
2004.05.23
ListBox & Message


8-1078753894
max003
2004-03-08 16:51
2004.05.23
Как пользоваться LoadFromClipboardFormat




   Наверх