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

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

Привет всем ! Помогите разобраться с DLL . :) [D6, Win2k]


Spartak ©   (2002-10-23 05:02:00) 

Ну приспичело блин мне написать программу где встречаеться работа
с dll, с базам данных, с сетью и ещё кучей тому подобных приколов.
а самый прикол что мне приходиться учиться им как говориться на ходу. Единственое что меня спасает это этот сайт и его обитатели ,
за что конечно им большое Спасибо!!! На все вопросы которые я задавал здесь я получил ответы ( и это круто конечно ). Просьба не думать что я ваще ни чего не знаю. Ну в принципе я учюсь тока !
Так что я думаю что может и на этот вопрос мне ответят ( очень хотелось бы !) : ну вот типа сам вопрос : я сделал DLL засуул в неё форму , потом отобразил ее и т.д А как сделать чтобы передать
этой форме какоето число или слово ну типа form2.label1.caption:="типа круто"; и как потом передать из этой формы его обратно ?
ну короче как сделать чтобы форма в dll была не модальной и тд. ? А ?
З.Ы Мессагами не получаеться !!!


ILYA1   (2002-10-25 19:22:00) [1]

Я тоже начинающий, точнее программирую от случая к случаю.
1й случай был, когда директивa PROGRAMM была обязательна
2й когда ТР5.0 вышел
3й когда GUI типа Windows придумали
4й сейчас, пока 5ку изучал уже 7-ка вышла :))))
Вот у меня тоже передаются String"и в DDL. Хотя для этого в USER ShareMem должен быть прописан, и BORLNDMM.DLL таскать надо за собой, но у меня все и так прекрасно работает без ShareMem и BORLNDMM.DLL.
Хотелось бы знать почему? Может быть из-за того что значения String"ов у меня короче 256 символов и Delphi неявным образом преодразует их в ShortString.
С уважением Илья.


Pit0n   (2002-10-25 18:57:00) [2]

Народ, не понял причины спора.. Кто на свете всех вУмнее?

SPARTAK: Если DLL будет работать только с твоей программой, то используй Sharemem и не в чем себя не ограничивай. Дельфи сделает все за тебя.

Если пишешь отдельную DLL которая будет использоваться не только твоей программой, написанной на Дельфи, но например на каком-нибудь С, которая не понимает наших типов, то в качестве входящих/исходящих типов используй стандартные типы WIndows-программировния ну типа PCHAR, BOOL и прочее. Преобразования в "привычный" тип используй в теле функций.

Теперь по существу:
А зачем тебе форма в ДЛЛ? Говорят что самое правильное решение - самое простое. А нужен ли тебе этот от геморрой?
Может проще фреймов понаделать в самомм exe-шнике и создавайть их и убивать, чем искать handle у контролов и слать им сообщения или еще хуже писать отдельные/ую функцию для заполнения?

Если мало времени, IMHO наверно ты выбрал не самый легкий путь.

PS Я не самый умный и книжки читаю редко.


Digitman   (2002-10-25 17:55:00) [3]

>s_alexander

А ты поосторожней, сударь, в оценках !

На категоричное - но необдуманное - заявление <Diz> последовало столь же категоричное - пусть и краткое - возражение <Игорь Шевченко>

Не нравится ? Ты круче ? Возьми и возрази аргументированно : это не "бред", потому что (и т.д.) !


s_alexander   (2002-10-25 17:10:00) [4]

> To Игорь Шевченко
Откуда ты взялся умник? Читай тогда книжки и не лезь на форумы. Они для того и придуманы, чтобы узнавать что-то новое.
А бред написан тобой. У тебя здесь три коментария и ни одного дельного.
А Diz написал правильно, создай новую DLL через "File->New->DLL Wizard" и там для умников будет написано для чего нужен ShareMem. Я правда работаю на C++ Builder, но я думаю в Delphi то же самое.


Игорь Шевченко   (2002-10-24 18:12:00) [5]

Spartak © (23.10.02 19:58)

Я, когда не знал, книжки читал. Чего и вам рекомендую - rulezz фарева.

А если кто-то высказывает полную чушь, почему бы и не сказать об этом ? :-)


HiEx   (2002-10-24 17:58:00) [6]

В качестве параметров к созданию твоей формы передавай парраметр TForm.Application.
Перед созданием окна подмени TForm.Application dll"ки полученым из EXE"шника (и не забудь при освобождении его восстановить)
=>в этом случае все мессаги будут синхронизированы нормально.
А что касаеться того как иметь доступ к ее компонентам - тебе лучше всего восспользоваться интерфейсами(в твоем случае IXXX = interface(IUncnown)). Если ты в них еще не разбирался, то почитай - тебе понравиться.


Spartak   (2002-10-23 20:17:00) [7]

[NIKEL] © (23.10.02 20:03)
//а ваабще DLL надо использовать! а не просто так чтоб сбоку у //программы были - это нерационально

Я с этим полностью согласен ! Ведь для решения подобных задачь
и сделан этот форум !!! Ведь так ?


[NIKEL]   (2002-10-23 20:03:00) [8]

Сиё есть на самом деле гонево какоето :\

а ваабще DLL надо использовать! а не просто так чтоб сбоку у программы были - это нерационально


Spartak   (2002-10-23 19:58:00) [9]

>Игорь Шевченко
>Бред
извеняюсь конечно но что это у вас любимое слово ? :)
куда ни зайдёшь везде это пишите !
Ну если вы умеете программировать то почему - бы не подсказать
нам - чайникам в программированию ??? вы же тоже когда-то были
таким !!!


Игорь Шевченко   (2002-10-23 12:04:00) [10]

Diz (23.10.02 11:53)

> Общая идеология такова: передаваемые в DLL данные (соответственно
> и возвращаемые ею) должны иметь типы, известные системе
> (windows в нашем случае), поэтому строки передавать надо
> как PChar.


Бред


Diz   (2002-10-23 11:53:00) [11]

А ShareMem использовать не обязательно. Общая идеология такова: передаваемые в DLL данные (соответственно и возвращаемые ею) должны иметь типы, известные системе (windows в нашем случае), поэтому строки передавать надо как PChar.


Севостьянов Игорь   (2002-10-23 11:35:00) [12]

Akim2 (23.10.02 11:00)
> Сам недавное разбирался довольно глубоко

DLL-ке понравилось, что так довольно глубоко .... Шутка... ;о)


Akim2   (2002-10-23 11:00:00) [13]

При использовании в качестве параметров string не забывай в dpr всех модулей самой dll прописать в разделе
Uses
ShareMem, ... а потом все остальное. Но рпейдется тягать за собой borlndmm.dll. Без этого твоя прога будет валится и dll нормально работать не будет.

Если есть вопросы подробней пиши на мыло. По DLL могу ответить на многое. Сам недавное разбирался довольно глубоко.


Diz   (2002-10-23 10:59:00) [14]

на www.marcocantu.com можно скачать кучу полезных примеров, в частности и по интересующей тебя теме.


Spartak   (2002-10-23 10:35:00) [15]

УФ !


Игорь Шевченко   (2002-10-23 10:30:00) [16]

Spartak © (23.10.02 09:35)

Program Files\Borland\Delphi\Demos\*.*


Spartak   (2002-10-23 09:35:00) [17]

DeadHDD
\\ Пиши в DLL"ке функцию, передавай ей параметр \\Form2.Label1.Caption, обрабатывай и возвращай его.
А нельзя ли кодом ? плиз !


Dynamit   (2002-10-23 08:43:00) [18]

Если грамотно отобразить форму (немодально), то с мессагами проблем не возникает (смотри мой вопрос DLL & Thread) в этом форуме - там поток, созданный в DLL, посылает основному приложению сообщения.

Но наверное с функциями попроще :)


DeadHDD   (2002-10-23 05:46:00) [19]

Пиши в DLL"ке функцию, передавай ей параметр Form2.Label1.Caption, обрабатывай и возвращай его.


Наверх

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