Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.08.2009, 23:35   #1
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию Передать строки из dll в программу

Здравствуйте, у меня такой вопрос. Как из функции которая находится в длл, передать в программу строки? Пробовал передавать Tstringlist, Tstring - вылетает исключение в длл.
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Старый 02.08.2009, 23:47   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

использовать PChar или ShortString
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.08.2009, 23:54   #3
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

пробывал так (в dll):

Код:
Function h:Pchar;
var g:TStringList;
Begin
G:=TStringList.Create;
G.Add('7');
G.Add('8');
Result:=G.GetText; //или так Result:=Pchar(G.Text);
G.free;
end;
а в программе так
Код:
//событие
ListBox1.items:=H;
в результате я получаю все что угодно только не то, что отправлял (крякозябры).
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Старый 02.08.2009, 23:57   #4
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Цитата:
{ Important note about DLL memory management: ShareMem must be the
first unit in your library's USES clause AND your project's (select
Project-View Source) USES clause if your DLL exports any procedures or
functions that pass strings as parameters or function results. This
applies to all strings passed to and from your DLL--even those that
are nested in records and classes. ShareMem is the interface unit to
the BORLNDMM.DLL shared memory manager, which must be deployed along
with your DLL. To avoid using BORLNDMM.DLL, pass string information
using PChar or ShortString parameters. }
Прочитав то что написано в маcтере создания библиотеки:
Как вариант вы можете подключить юнит ShareMem ПЕРВЫМ в вашей библиотеки и DLL - тогда сможете работать с длинными строками. Но по-моему BORLNDMM.DLL придется тоскать за собой.
Страх это слабость и потому, кто испугался уже побежден.

Последний раз редактировалось Mixasik; 03.08.2009 в 00:00.
Mixasik вне форума Ответить с цитированием
Старый 02.08.2009, 23:59   #5
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

Пробывал и это (естестественно результат string) - или крякозябры или давит ошибками.
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Старый 03.08.2009, 00:14   #6
Mixasik
New Delphi Coder
Форумчанин Подтвердите свой е-майл
 
Аватар для Mixasik
 
Регистрация: 20.07.2008
Сообщений: 874
По умолчанию

Цитата:
Сообщение от 856100 Посмотреть сообщение
Пробывал и это (естестественно результат string) - или крякозябры или давит ошибками.
Попробуйте использовать тип Variant.

Вот так: ...
Вложения
Тип файла: rar Projects.rar (239.2 Кб, 17 просмотров)
Страх это слабость и потому, кто испугался уже побежден.

Последний раз редактировалось Mixasik; 03.08.2009 в 00:22.
Mixasik вне форума Ответить с цитированием
Старый 03.08.2009, 00:37   #7
856100
Форумчанин
 
Регистрация: 12.08.2008
Сообщений: 135
По умолчанию

Решил проблему сл. образом:
1. использовал библиотеку BORLNDMM.DLL
2. добавлял строки (AddStrings)
Всем спасибо за помощь!!!
Будь проще, бери пример с одноклеточных
856100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из .exe TBitMap передать в DLL(форма) lexaltd Мультимедиа в Delphi 13 14.07.2009 17:47
Вынос компонентов программы (которые делфи всталяет в каждую программу) из проги в dll GanGSISoft Общие вопросы Delphi 17 02.07.2009 17:24
Как передать данные в MDIChild-форму, загруженную из dll Shvonder Общие вопросы Delphi 0 18.03.2009 12:46
Как передать данные уже в запущеную программу dr.Chas Общие вопросы Delphi 15 18.06.2008 22:16
как из dll передавать данные в основную программу? andrey4623 Общие вопросы Delphi 5 06.08.2007 10:15