Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1127738437
B@BY
2005-09-26 16:40
2005.10.23
Многострочный Label


2-1127844684
Pasha L
2005-09-27 22:11
2005.10.23
Запуск одного ехе из другого


1-1128315242
Kacnep
2005-10-03 08:54
2005.10.23
Правильно завершить Приложение при создании


14-1128331466
Андрей Жук
2005-10-03 13:24
2005.10.23
Названа самая популярная в мире песня


6-1118241099
twin
2005-06-08 18:31
2005.10.23
Заполнение HTML форм из Delphi





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский