![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Доброго времени суток!
Накопал информации по поводу этого. Понял 2 вещи: 1. для передачи строк из/в dll использовать PChar(ShareMem нужен? Если да, то как без него можно обойтись?) 2. внутри функций exe/dll приводить PChar к строке. Играюсь на xe2.. Есть такой код: Код:
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
гм, sHLPath было PChar..
Строку внутрь я передаю... как вернуть её из dll? Код:
|
![]() |
![]() |
![]() |
#3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
думаем почему GetWindowText нуждается в размере буфера и так же применяет strcpy(wcscpy если юникод).
http://programmersforum.ru/showthread.php?t=185064 правда там С++ в ДЛЛ, но надеюсь идея понятна. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
хоть убейте, не понимаю как правильно привести WideString к PWideChar
Код:
|
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
у вас не константа, но есть известный лимит, потому можно применить код из поста №9 по ссылке.
далее ошибка в коде, вы память не выделаете под строку в PWideChar. далее если у вас юникод Делфи то эта функция не нужна, а просто CopyMemory. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Воспользовался копированием памяти...
Код:
Поступил так: Код:
|
![]() |
![]() |
![]() |
#7 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
ну так вы освободили память, и указатель перестал указывать на корректные данные.
как вы думаете, почему функция из тему так же как и GetWindowText принимают буфер? потому что только пользователь(функции) ответственнен за свой буфер(см код 1), а не программа его навязывает(см код 2). 1) Код:
2) Код:
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#8 | |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
![]()
1)там количество байт, а WideChar весит 2.
2)а терминальный нуль писать не надо? Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,434
|
![]()
Понял.
Теперь другая проблема.. FreeMem посылает меня лесом.. DLL Код:
Код:
p.s. для использования дельфийской dll в с++, по прежнему нужны танцы с бубном(*.def), при сборке dll в delphi? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Embarcadero Delphi XE2 Partner DVD (Зборник компонентов для XE2) | volod3000 | Софт | 2 | 01.11.2011 02:26 |
Передача переменной в EXE | Evgen1503 | Общие вопросы Delphi | 6 | 03.05.2010 15:56 |
Передача строк из dll | sprofxx | Общие вопросы Delphi | 9 | 02.04.2010 07:41 |
Передача строки exe (с формой (API)) ↔ exe (форма скрыта) | Alex Cones | Общие вопросы Delphi | 16 | 04.10.2009 15:26 |
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку | kapustin | Общие вопросы .NET | 10 | 23.09.2009 22:20 |