Главная страница
    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.46 MB
Время: 0.041 c
2-1127907181
Гость22
2005-09-28 15:33
2005.10.23
Как не дать закрыть свое приложение?


14-1127910784
Иванов__
2005-09-28 16:33
2005.10.23
Нужен подобный компонент но бесплатный


14-1128408994
Jolik
2005-10-04 10:56
2005.10.23
Сорри за оффтоп: чем MD4 лучше crc32?


14-1128332906
JB
2005-10-03 13:48
2005.10.23
Функция Printer и лазерные принтеры


4-1124447846
BFG9k
2005-08-19 14:37
2005.10.23
Некорректное поведение RasGetEntryDialParams





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский