Страница: 1 |
Вопрос: PChar | Добавлено: 14.09.03 11:32 |
Автор вопроса: ![]() |
А что за тип данных PChar и какой ему есть аналог в VB6? Надо как-то вызвать функцию из dll'ки: function Search(Root: PChar; KeyWord: PChar): PChar; |
Ответы | Всего ответов: 6 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #1 | Добавлено: 14.09.03 16:34 |
на сколько знаю я PChar - это указатель на строку или символ (P - pointer), по-моему используется в Delphi для передачи строк в длл функции так как с ними в дллях Delphi есть проблемы связанные с памятью, как работать с этим типом в вба честно говоря не знаю так как вба с указателями практически не работает... |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #2 | Добавлено: 14.09.03 16:42 |
попробуйте передать строку как она есть может получится.. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 14.09.03 16:44 |
Ну это я итак знаю. Удалось выяснить, что этот PChar соответствует LPCSTR в C++. Пробовал просто в качестве параметров передавать строки, но не получается - VB вылетает без слов. Думаю, проблема в обработке возвращаемого значения функции (он тоже PChar). Как можно вызвать грамотно такую функцию? |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #4 | Добавлено: 14.09.03 19:17 |
а стипом variant ничего не пробовали, тоесть присвоить значение этой фунции переменной типа variant? |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Администратор ICQ: 326066673 Вопросов: 368 Ответов: 5968 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 15.09.03 12:50 |
Теперь объявление функции такое: procedure Search(FileName, Root, KeyWord: PChar); Как это будет на VB6? Я пробовал так: Private Declare Sub Search Lib "c:\mysearch.dll" (ByVal FileName As String, ByVal Root As String, ByVal KeyWord As String) И так: Private Declare Sub Search Lib "c:\mysearch.dll" (ByRef FileName As String, ByRef Root As String, ByRef KeyWord As String) Ничерта не получается ![]() |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: 280044491 Вопросов: 43 Ответов: 227 |
Профиль | Цитата | #6 | Добавлено: 15.09.03 17:32 |
если вы имете доступ к этой длл, то заменить PChar на стринг удастса? если да, то следует изменить названия входных параметров а в самом начале программы написать FileName:=PChar(pFileName), только к модулю прийдется добавить модуль управления памятью, по-моему MemShare или что-то в этом роде. |
Страница: 1 |
|