Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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 в дизайнере Делфи, он генерирует БОЛЬШОЙ  такой комментарий. Его и следует внимательным образом прочитать и усвоить.


Наверх

Титульная страница Поиск, карта сайта Написать письмо