![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Написал dll'ку в котрой имеется такая вот процедура:
procedure SortFile(const DirSearch, PrefixSearch, TipSearch: String; var ResultList: TStringList); Процедура заполняет переданный ей ResultList именами найденных файлов. Если данная процедура расположена в обычном модуле, то всё работает, а вот если процедуру вызывать из dll, то ResultList всегда пустой. В чем ошибка, где туплю? |
|||
|
||||
| ivan219 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1121 Регистрация: 19.11.2005 Где: Планета земля Репутация: 5 Всего: 12 |
В том что Dll недружат со String используй PChar или воспользуйся модулем ShareMem только его надо поставить в самом начале программы в фаил Project1.dpr и после uses пишеш ShareMem, Forms.....
Это сообщение отредактировал(а) ivan219 - 2.10.2007, 13:51 |
|||
|
||||
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
ivan219, Добавил модуль ShareMem в исходник dll и исходник проекта (на первом месте) скинул в папку проекта borlndmm.dll, но всё равно не работает
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
mspuz, добавил самым первым и в DLL и в проект и в модуль?
Добавлено через 50 секунд Кстати Объекты тем более нельзя передавать и получать из DLL. Это запрещено правилами. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Alexeis, У меня "бесформенное" приложение - модуль только один. Т.е. список файлов засунуть в строку с разделителем и потом перебирать? TStringList не пройдет?
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
Подойдет, но только его нужно сериализовать что ли. Например просто в строку
s.Text - будет содержать все строки разделенные символом возврата каретки В Dll нужно аналогично присвоить свойству объекта TStringlist значение переданное строки. Добавлено через 1 минуту и 9 секунд Короче не стринглист передать, а строку с содержимым TStringlist -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 15 Всего: 76 |
Нет, не подойдет. В dll-ке объект TStringList(ну или лубой другой) будет, скажем так, не такой как в основном Instance-е приложения. У них разные VMT. Вообщем нехорошо так делать, и даже если это как-то будет работать, гарантий тебе никто не даст. -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| mspuz |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 304 Регистрация: 20.6.2005 Где: Ногинск Репутация: нет Всего: нет |
Alexeis, А у меня все получилось и с TStringlist, просто ошибка была в другом.
|
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 34 Всего: 459 |
mspuz, может и получилось, так как TStringlist простой объект, но так неправильно этот способ не гарантируется Кодегиром. Лучше тогда уж делать не Dll, а BPL. Суть та же самая, но можно работать с классами.
Добавлено через 1 минуту и 2 секунды Хотя тогда еще прийдеться тащить за собой половину делфийских BPLок... тож нехорошо. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 18 Всего: 88 |
и вдогонку:
здесь
-------------------- Обижено школьников: 8 |
|||
|
||||
| EvilsInterrupt |
|
|||
|
Executables research ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1019 Регистрация: 14.7.2007 Где: Железнодорожный, МО, Россия Репутация: нет Всего: 9 |
mspuz, Передавай классовую ссылку! Читай про классовые ссылки! Почему толком у тебя не получилось, так это потому что разные модули и у каждого своя дурь по поводу RTTI, когда будешь работать с классовой ссылкой, тогда и будет все ок!
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |