![]() |
|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Форумчанин
Регистрация: 10.12.2013
Сообщений: 227
|
![]()
Исправил
Код:
Код:
|
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 21.04.2014
Сообщений: 115
|
![]()
1) Литералы дельфя сама кастует правильно, а String нельзя в лоб кастовать к PAnsiChar. Сначала надо сделать каст к AnsiString: PAnsiChar(AnsiString(MyString)).
2) paNSIchar(form1.Caption) - это плохой путь для обратной связи. Туда надо без кастов сразу передавать PAnsiChar (и предельную длину выделенной строки\памяти). 3) Можно подцепить в ехе и dll модуль simplesharemem (должен быть первым в списке модулей), тогда можно будет просто передавать обычный String (менеджер памяти сам будет разбираться, что где выделять\освобождать) |
![]() |
![]() |
![]() |
#13 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
![]()
А вы его туда и не передаете.
|
![]() |
![]() |
![]() |
#14 | |
Форумчанин
Регистрация: 10.12.2013
Сообщений: 227
|
![]() Цитата:
Последний раз редактировалось Alexandr17; 18.06.2014 в 15:54. |
|
![]() |
![]() |
![]() |
#15 | |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,527
|
![]() Цитата:
Код:
программа — запись алгоритма на языке понятном транслятору
|
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 10.12.2013
Сообщений: 227
|
![]() Код:
Код:
Последний раз редактировалось Alexandr17; 18.06.2014 в 16:22. |
![]() |
![]() |
![]() |
#17 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
не ... не пойдзёць
|
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 21.04.2014
Сообщений: 115
|
![]()
Тут проблема из-за очень слабой теоретической базы, надо почитать и подружиться с указателями. Надо полистать про то как устроены строки в Дельфи, чтобы иметь представление: какие, когда и где команды дописывает сам компилятор.
simplesharemem в отличие от своего предшественника sharemem не требует тащить за собой никаких дополнительных библиотек. 1) Код:
2) Код:
3) Чтобы что-то записать по указателю на строку надо вызывать StrPCopy(PAnsiChar, MyAnsiString) в dll. Записывать в мусор нам нельзя, поэтому ехе сначала должен выделить под это безобразие память с помощью AnsiStrAlloc(MyLength). После этого уже можно отдавать указатель в dll (и следить, чтобы dll не записывала туда строку длиннее MyLength). Когда работа с указателем будет закончена (например, отработает form1.Caption:=pac) следует освободить занятую память вызвав StrDispose(pac). |
![]() |
![]() |
![]() |
#19 |
Форумчанин
Регистрация: 10.12.2013
Сообщений: 227
|
![]()
А если неизвестна длина строки
|
![]() |
![]() |
![]() |
#20 |
Подтвердите свой е-майл
Регистрация: 29.08.2012
Сообщений: 4,011
|
![]()
вам зачем форма в длл?
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Работа с DLL c# (Вызов Формы из DLL) | updaite | C# (си шарп) | 16 | 24.10.2013 05:48 |
Надстройка DLL (XLL) с формой для Excel (без VBA) | Louken | Microsoft Office Excel | 6 | 09.10.2012 20:04 |
Работа с динамически созданной формой | Airou | C++ Builder | 1 | 12.07.2011 10:58 |
работа с C# формой из C++ dll | d2s1 | Общие вопросы .NET | 0 | 14.03.2010 00:44 |
Проблема с дочерней формой в DLL | madmech | Общие вопросы Delphi | 3 | 09.06.2009 19:21 |