Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Непонятка с var в dll`ай [D6, Win95/98, Win2k, WinXP]


hooky-mars ©   (2005-09-29 18:13:00) 

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 то выскакивает ошибка о неверном обрашении с памятью.
За место вара использовать аут не подет.
Что можно сделать?


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

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


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


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

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


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


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

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


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


> > Cform.showModal = 458

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


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


> > 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;
....


GuAV   (2005-09-29 18:31:00) [6]

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

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


han_malign   (2005-09-29 18:18:00) [7]

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


Digitman   (2005-09-29 18:17:00) [8]


> Cform.showModal = 458


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


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


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


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


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


Наверх

Титульная страница Поиск, карта сайта Написать письмо