Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение компонентов в DLL 
:(
    Опции темы
Alekse
Дата 1.11.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 12.7.2005

Репутация: нет
Всего: нет



Код DLL-ки
Код

library Project1;

uses

  SysUtils, CategoryButtons, Controls, Windows, Forms, StdCtrls,
  Classes;

{$R *.res}

procedure MyButton(AForm: TWincontrol);export;
var MButton: TButton;
begin
 MButton:= TButton.Create(AForm);
 try
 MButton.Name:='Button123';
 MButton.Parent:= AForm;
 finally
   MButton.Free;
 end;
end;
exports
MyButton;
begin

end.

Код приложения
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, CategoryButtons, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
   private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Type
   TMyButton = Procedure (AForm:TObject);
var
   DLLInstance: THandle;
   MyButton: TMyButton;
begin
DLLInstance:= LoadLibrary ('Project1.dll');
if DLLInstance = 0 then
begin
  MessageDlg('Невозможно загрузить DLL',mtError,[mbOK],0);
  Exit;
end;
@MyButton:= GetProcAddress(DLLInstance,'MyButton');
MyButton(self);
FreeLibrary(DLLInstance);
end;

end.


Выдает ошибку "raised exception class EConvertError with message 'Cannot assign TFont to a TFont'"
PM MAIL   Вверх
Alexeis
Дата 1.11.2007, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Alekse, в Dll или из Dll нельзя передавать объекты. У Dll и приложения есть свои копии классов, но они разные, потому будут глюки. 
Кроме того я не вижу даже подключенного ShareMem/FastShareMem.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0428 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.