![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с PChar в DLL [D5]
nikolo © (2002-08-20 11:06:00)Всем привет! Кто может на примере показать как реализовать такую функцию в dll? Проблема в том, что делать Result := PChar(S); на нельзя, так как же выкрутиться? Ребята, очень надо...
{Функция в dll}
Function FFF(pParam: PChar): PChar;
Var
S: String;
Begin
S := StrPas(pParam);
.....
действия с S
.....
Result := PChar(S); // это не правильно, а как надо?
End;
{В основной программе}
procedure TForm1.Button1Click(Sender: TObject);
Var SS: String;
Begin
SS := "Hello world!";
Label1.Caption := FFF(PChar(SS));
end;
EVV (2002-08-20 12:46:00) [1]Возможно дело в том, что выделение памяти для строки происходит в DLL.
Передай в DLL ссылку на переменную PChar, под которую выделишь память в программе.
Все это из-за менеджера памяти.
Юрий Федоров (2002-08-20 12:21:00) [2]Function FFF(pParam: PChar; ParamSize : Integer) : PChar;
Var
S: String;
begin
...
Result:=StrPLCopy(pParam, s, ParamSize);
end;
Skier (2002-08-20 12:08:00) [3]>nikolo
Либо это полный бред, либо ты путаешь понятия !
В общем так : давай код полностью!
nikolo (2002-08-20 12:02:00) [4]> Skier ©, вообще-то не понятно, зачем такие подробности, но если надо, то:
-Экспортирую:
Function FFF(pParam: PChar): PChar; stdcall; external "my_lib.dll" name "FFF";
-Описываю в host-приложении:
Label1.Caption := FFF(PChar(SS));
-Библиотеку гружу явно.
nikolo (2002-08-20 11:43:00) [5]Help!!!
Skier (2002-08-20 11:32:00) [6]>nikolo
Напиши подробно :
- как экспортируешь функцию из DLL
- как описываешь её в host-приложении
- используешь ли явную загрузку библиотеки ?
если да, то как ты её грузишь...
nikolo (2002-08-20 11:15:00) [7]Не понял!Можно подробнее?
Ученик (2002-08-20 11:09:00) [8]Function FFF(pParam: PChar): PChar;
const
S: String = "";