Форум: "Начинающим";
Текущий архив: 2005.10.23;
Скачать: [xml.tar.bz2];
ВнизНепонятка с 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c