![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Про DLL и строки. [D2005, XP]
Vovan#1 © (2006-09-15 22:27:00)Вопрос такой.
Есть ли проблемы с памятью при передаче строк в функции и процедуры DLL?
Есть ли какие-то особенности при использовании ShortString как возвращающегося значения и можно ли просто использовать тип, вроде TMyString = String[20]?
Германн (2006-09-16 16:11:00) [21]
> Правильный ответ:
> ДА, ЕСТЬ. Когда добавляешь stdcall, то не работает.
>
Неужели не работает?
Правильный вопрос: Что такое stdcall?
Вот так и надо было спрашивать, а не мутить воду короткими строками!
Vovan#1 (2006-09-16 12:48:00) [22]Чтоб вас...
Вопрос:
>Есть ли какие-то особенности при использовании ShortString как возвращающегося значения
Правильный ответ:
ДА, ЕСТЬ. Когда добавляешь stdcall, то не работает.
Рубрика же "Начинающим".
Германн (2006-09-16 01:05:00) [23]
> zamtmn © (16.09.06 00:43) [6]
>
> >>В этом случае лучше обратить свой взор на тип PChar
> в этом случае следует обратить взор на тип который заявлен
> в объявлении импортируемой процедуры
>
По сабжу да. А по моему контексту PChar.
zamtmn (2006-09-16 00:43:00) [24]>>В этом случае лучше обратить свой взор на тип PChar
в этом случае следует обратить взор на тип который заявлен в объявлении импортируемой процедуры
Германн (2006-09-16 00:32:00) [25]
> Везде говорится о проблемы передачи строки из DLL в программу
> (и по той ссылке тоже). Я же хотел уточнить, распространяется
> ли это дело и на обратную операцию.
Направление передачи не имеет значения. Но все проблемы связаны именно с "длинными строками" - тип AnsiString и тип String в Д2 и выше при включенной опции компиллятора {$H+}.
Если ограничишься типом ShortString проблем не будет.
Опять же если и программа и dll написаны в Дельфи, то и тут проблем не будет, если вдумчиво прочитаешь комментарий, который Дельфи вставляет в заготовку библиотеки и выполнишь всё, что там сказано.
И последнее. Если программа или длл скомпиллированы продуктами разных производителей, то проблемы будут при использовании и AnsiString и ShortString!
В этом случае лучше обратить свой взор на тип PChar.
zamtmn (2006-09-15 23:39:00) [26]да, распространяется
Vovan#1 (2006-09-15 23:32:00) [27]> http://delphimaster.ru/cgi-bin/forum.pl?id=1157920671&n=18
Везде говорится о проблемы передачи строки из DLL в программу (и по той ссылке тоже). Я же хотел уточнить, распространяется ли это дело и на обратную операцию.
zamtmn (2006-09-15 23:09:00) [28]http://delphimaster.ru/cgi-bin/forum.pl?id=1157920671&n=18
Palladin (2006-09-15 22:31:00) [29]
> Есть ли какие-то особенности при использовании ShortString
> как возвращающегося значения и можно ли просто использовать
> тип, вроде TMyString = String[20]?
1 Нет
2 Да
> Есть ли проблемы с памятью при передаче строк в функции
> и процедуры DLL?
Будут, если не укажешь в приложении и библиотеке первым используемым модулем ShareMem.