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

Вниз

Непонятка с var в dll`ай   Найти похожие ветки 

 
hooky-mars   (2005-09-29 18:13) [0]

Saluer!

Создал длл проэкт в нем есть форма, которая работает как диалог, те. запрашивает у пользователя данные и возврашает результат в процесс вызвавший его
Экспортируемая функция:

functuin ....(hwnd:THandel; var srv,ndb:String):...
var CFORM:TForm1;
begin
Application.Handle:=hwnd;
CFORM:=TForm1.Create(Application.Owner);
...
if Cform.showModal = 458 then
begin
  srv:=Server.Text //TEdit
  ndb:=Name.Text //TEdit
end;
Cform.Free;
end;

И когда я пытаюсь после завершения функции воспользоваться переменными, которые были посланны в качестве srv,ndb то выскакивает ошибка о неверном обрашении с памятью.
За место вара использовать аут не подет.
Что можно сделать?


 
Digitman ©   (2005-09-29 18:17) [1]


> Cform.showModal = 458


это что такое ?
что за велосипед ?)


> я пытаюсь после завершения функции воспользоваться переменными


и КАК же ты пытаешься ?


> За место вара использовать аут не подет


"вара" vs "аут" - это из другой совсем оперы.
при том что суть одинакова.


 
han_malign ©   (2005-09-29 18:18) [2]

String нельза передавать в DLL, а уж var и подавно...
У DLL и основного приложения разные менеджеры памяти - либо подключать ShareMem, либо не использовать string...


 
GuAV ©   (2005-09-29 18:31) [3]

han_malign ©   (29.09.05 18:18) [2]
а уж var и подавно...

С чего бы это !?
Смори хотя бы тот же windows.pas, там есть функции с var параметрами, импртируемые из dll - и ничё, работает. Для использвания ссылки не нужен менеджер памяти.


 
hooky-mars   (2005-09-29 18:55) [4]


> > Cform.showModal = 458

Это то что прилшо под пальцы
> "вара" vs "аут" - это из другой совсем оперы.
> при том что суть одинакова.

По логике они должны быть разными, потому как аут предпологате полько запись в эти переменные (имею в виду внутри экспортируемой функции), а вар позволяет так же читать их (а это мне как раз и надо)
Вот более полные пример функции:

functuin ....(hwnd:THandel; var srv,ndb:String):...
var CFORM:TForm1;
begin
Application.Handle:=hwnd;
CFORM:=TForm1.Create(Application.Owner);
 Server.Tex:=srv;
 Name.Text:=ndb;
if Cform.showModal = 458 then
begin
 srv:=Server.Text //TEdit
 ndb:=Name.Text //TEdit
end;
Cform.Free;
end;



> и КАК же ты пытаешься ?

Очень просто:
...
GNC(Application.Handle,Serv,NameDB);
FreeLibrary(hdll);
Cption:=Serv+"\"+NameDB;
....


 
hooky-mars   (2005-09-29 18:58) [5]


> > Cform.showModal = 458

Какая разница что использвать mrOk или 458 (всё равно размер тотже)?


 
hooky-mars   (2005-09-29 19:00) [6]


> вара" vs "аут" - это из другой совсем оперы.
> при том что суть одинакова.

Кстати если кто не понял. Вопрос про вар что в объявлении функции:
....(hwnd:THandel; var srv,ndb:String):...


 
hooky-mars   (2005-09-29 19:02) [7]


> String нельза передавать в DLL, а уж var и подавно...

Про вар точно не уверен, а стринги передовал мильнон раз и ни чего.


 
hooky-mars   (2005-09-29 19:04) [8]

Кстати хотелось бы знать, почему ветка переведена в начинающих? Что я тако спорозил, чтобы посчитать начинающим, и где та грань между начинающим и мастером?



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

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

Наверх




Память: 0.48 MB
Время: 0.092 c
2-1128003394
Тюменский
2005-09-29 18:16
2005.10.23
Вопрос по Delphi и MySQL


14-1127983768
ThreeTONE
2005-09-29 12:49
2005.10.23
Потянет ли LPT порт такое?


11-1109578928
NorthMan
2005-02-28 11:22
2005.10.23
[Error] Unit1_1.inc: Identifier redeclared: NewForm1


2-1128361516
Erl
2005-10-03 21:45
2005.10.23
Events у созданного программно компонента


2-1127846953
vvh
2005-09-27 22:49
2005.10.23
Базы данных и Интернет