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

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

Написание DLL [D7, Win2k, WinXP]


Flying home ©   (2004-04-06 17:35:00) 

Господа! Подскажите статьи, в которых бы доступно описывались принципы передачи и возвращения параметров функций из DLL и обратно. Короче, желательно написать DLL, которую могли бы юзать EXE, написанные не на Delphi без использования менеджеров памяти.


Flying home   (2004-04-07 16:54:00) [1]

//Digitman
Thanks


Digitman   (2004-04-07 16:48:00) [2]


> Зачем нужен борландовский менеджер памяти?


для внутреннихнужд программы, разработанной в среде Делфи или ВСВ

если вызвающий и вызываемый модули разработаны в этих средах, они при определенных условиях могут пользоваться одним и тем же упомянутым менеджером, при этом вызываемый код может запрашивать блоки памяти у менеджера, а вызывающий их освобождать

во всех иных случаях (за исключением случаев, когда использование конкретного менеджера памяти по соглашению между вызывающей и вызываемой сторонами) ответственность за выделение/перераспределение/освобождение памяти делить между сторонами вызова недопустимо


BiN   (2004-04-07 16:40:00) [3]

Прочитал. Понятно, но мало. В смысле мало написано.

ну а теперь ты перешел на след. уровень ->
-> теперь пришла пора читать Parameter passing (там же)


Flying home   (2004-04-07 16:34:00) [4]

Прочитал. Понятно, но мало. В смысле мало написано. Зачем нужен борландовский менеджер памяти?
//Игорь Шевченко
См. мой вопрос.


Digitman   (2004-04-07 13:41:00) [5]


> Flying home


ты читал топик "Сalling conventions" в хэлпе ? вникал ? надо думать, ничего не понял из того что там написано ?


Игорь Шевченко   (2004-04-07 13:34:00) [6]


> Чем умничать, лучше бы ответом помогли...


А сам уже не состоянии подумать/поискать ?


Flying home   (2004-04-07 12:26:00) [7]

Чем умничать, лучше бы ответом помогли...


Digitman   (2004-04-07 11:35:00) [8]


> DevelS


имелось виду - парой регистров edx:eax

стек не имелся ввиду, ибо надо быть круглым идиотом для передачи по значению структур большего размера через стек


DevelS   (2004-04-07 11:19:00) [9]

panov ©   (07.04.04 11:12) [10]:
уже лучьше :).


panov   (2004-04-07 11:12:00) [10]

>DevelS   (07.04.04 11:08) [9]

До 256 байт. Размер для передачи параметров через стек.


DevelS   (2004-04-07 11:08:00) [11]

>>структуру же размером до 8 байт в принципе можно и по значению передать, но это извращение

почему именно  8 байт ? где написано про это ограничение?


Flying home   (2004-04-07 11:01:00) [12]

Неужели нигде нет искомой инфы?
//Suntechnic
//Где память выделялась, там она и должна уничтожаться
Это как?


Digitman   (2004-04-07 09:58:00) [13]


> Flying home



> передавать по ссылке, или по значению?


если речь идет о передаче структур и строк, то только по ссылке

строку вообще по значению невозможно передать

структуру же размером до 8 байт в принципе можно и по значению передать, но это извращение


Digitman   (2004-04-07 09:58:00) [14]


> Flying home



> передавать по ссылке, или по значению?


если речь идет о передаче структур и строк, то только по ссылке

строку вообще по значению невозможно не передать

структуру же размером до 8 байт в принципе можно и по значению передать, но это извращение


Flying home   (2004-04-07 09:51:00) [15]

Вот именно эти проблемы меня и волнуют. Где прочитать об этом?
Желательно не просто строки передавать, но и record'ы из разных типов, в том числе и строки. И еще: передавать по ссылке, или по значению?


Suntechnic   (2004-04-06 18:31:00) [16]

>Flying home
PChar можно. Только есть одно очень важное правило, касаемое не только PChar, а всего того, что передаётся в Dll:
Где память выделялась, там она и должна уничтожаться. Иначе проблем не оберёшься.


Suntechnic   (2004-04-06 18:27:00) [17]

>Матлабист
... Максимум interface

И что ж это приложение написанное не на Delphi с этим типом делать то будет?


Flying home   (2004-04-06 18:24:00) [18]

А PChar можно? В том-то и дело, что нужно строки и передавать, и получать.


Матлабист   (2004-04-06 17:51:00) [19]

Для экспортируемых функций:
 1) Не использовать в параметрах и в возращаемом значении такие типы, как string, TObject, ... Максимум interface.
 2) Использовать соглашения вызова stdcall (желательно)


Наверх

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