![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
dll [D6, XP]
Com © (2006-12-17 18:57:00)Пробую создать ПРОСТЕЙШУЮ длл. Вроде все, как в учебнике, но программа ведет себя странно. Сначала получает значение из длл, а потом выдает invalid pointer operation. Вот код библиотеки и собственно программы:
library TestDLL;
uses
SysUtils,
Classes,
Forms,
Windows;
function Hello:string;
begin
hello:='Preved!';
end;
exports
Hello;
begin
end.
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function Hello:string; external 'testdll.dll';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
s:=Hello;
showmessage(s);
end;
end.
MetalFan (2006-12-19 09:33:00) [1]а еще лучше не использовать TForm )))
Германн (2006-12-18 00:55:00) [2]
> Kostafey © (18.12.06 00:41) [12]
>
> Тогда все совсем просто: нужно string заменить на shortstring.
>
Имхо, лучше на PChar. Тогда её можно будет пользовать в программах на других языках. А если нужно только на Дельфи, тогда лучше выполнить рекомендации из комментария.
Kostafey (2006-12-18 00:41:00) [3]Тогда все совсем просто: нужно string заменить на shortstring.
DrPass (2006-12-18 00:36:00) [4]
> Kostafey © (18.12.06 00:19) [8]
У него проблема не в форме. А в том, что он не прочитал Большой Синий Комментарий. Прочти и ты его, и поймешь, в чем была проблема
> Вроде все, как в учебнике, но программа ведет себя странно
...хотел бы я посмотреть на тот учебник
Kostafey (2006-12-18 00:33:00) [5]> [9] Германн © (18.12.06 00:29)
Ух, хороший самогон был... %}
Германн (2006-12-18 00:29:00) [6]
> Дело в том, что у тебя форма-то только объявлена, но не
> создана.
> Можно, например экспортировать еще одну процедуру для ее
> создания:
Какая форма??? Ты о чём?
Kostafey (2006-12-18 00:19:00) [7]
> [6] Джо-со-смарта (17.12.06 19:29)
Да будет Вам. Зачастую сама по себе задача не стоит того, чтобы решать все сопутствующие проблемы.
В одном согласен: по-другому не научишься.
НО как говориться, в какую сторону копать подсказать нужно.
> [0] Com © (17.12.06 18:57)
Дело в том, что у тебя форма-то только объявлена, но не создана.
Можно, например экспортировать еще одну процедуру для ее создания:
exports
procedure CreateForms(Appl, Form: THandle);
...
procedure CreateForms(Appl, Form: THandle);
begin
Application.Handle := Appl;
Form1 := TForm1.Create(Application);
Джо-со-смарта (2006-12-17 19:31:00) [8]Тебе указали на источник информации, чего еще?
Джо-со-смарта (2006-12-17 19:29:00) [9]Конечно, легче бегать клянчить и просить разжевать, чем самостоятельно читать справку и предупреждения среды.
Com (2006-12-17 19:10:00) [10]
> вольным пересказом
Вот так всегда.... Проще 10 сообщений написать вокруг да около, чем две строчки по теме. МАСТЕРА!
Джо (2006-12-17 19:03:00) [11]> [2] Com © (17.12.06 19:01)
> Ну если он Вами усвоен, может подскажете?
Зачем мне заниматься вольным пересказом того, что уже и так написано?
Com (2006-12-17 19:03:00) [12]Все, усвоил... Спасибо!
Com (2006-12-17 19:01:00) [13]Ну если он Вами усвоен, может подскажете?
Джо (2006-12-17 18:59:00) [14]> Пробую создать ПРОСТЕЙШУЮ длл. Вроде все, как в учебнике,
>
Когда создаешь DLL в дизайнере Делфи, он генерирует БОЛЬШОЙ такой комментарий. Его и следует внимательным образом прочитать и усвоить.