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

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

ресурсы в dll


Igor23 ©   (2008-03-26 17:50:00) 

ПОМОГИТЕ КТО ЧЕМ МОЖЕТ
Вызов .dll:
//////////////////////////////////////////////////////////////////////////
implementation

procedure ShowMyForm(Aowner:TComponent); external 'Project1.dll';

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
ShowMyForm(Self);
end;
//////////////////////////////////////////////////////////////////////////
сама dll
library Project1;

{ ..........}

uses
 SysUtils,
 Classes,
 Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

procedure ShowMyForm(AOwner:TComponent);
var
MyForm:TForm1;
begin
MyForm:=TForm1.Create(AOwner);
MyForm.ShowModal;
MyForm.Free;
end;

exports ShowMyForm;

begin
end.

///+ unit1 в dll имеетвид, здесь ОШИБКА памяти возникает при создании формы/////////////

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, DXClass, DXSprite, DXInput, DXDraws, StdCtrls;

type
 TForm1 = class(TDXForm)
  //TForm1 = class(TForm) пробовал и так всё равно ошибка(((
   DXDraw1: TDXDraw;
   DXImageList1: TDXImageList;
   DXInput1: TDXInput;
....................................................................
procedure TForm1.FormCreate(Sender: TObject);
begin
 I:=true;
with TBOSS.Create(Dxspriteengine1.Engine) do
begin
 PixelCheck := True;
 Image := form1.dxImageList1.Items.Find('BOSS');
 x:=350;
 y:=10;
 Width := Image.Width;
 Height := Image.Height;
end;

with TPlayerSprite.Create(Dxspriteengine1.Engine) do
begin
PixelCheck := True;
 Image := form1.dxImageList1.Items.Find('Pla');
 x:=350;
 y:=500;
 Width := Image.Width;
 Height := Image.Height;
end;

end;


Igor23   (2008-03-29 12:56:00) [1]


> C такими призывами в переходах надо стоятьЮ ане по форумам
> лазать.


и где ты тут призыв увидел.....нах ты вообще откликаешься и засираешь ветку?


Denis__   (2008-03-29 09:03:00) [2]


> ПОМОГИТЕ КТО ЧЕМ МОЖЕТ

C такими призывами в переходах надо стоятьЮ ане по форумам лазать.


Leonid Troyanovsky   (2008-03-28 23:12:00) [3]


> Igor23   (28.03.08 00:27) [14]

> Покажите плиз как его создать то?

Дык, так прямо и создавать.
Кто ж тебя, болезного, принудил к длл.

--
Regards, LVT.


DrPass   (2008-03-28 09:54:00) [4]


> Igor23   (28.03.08 00:27) [14]
>
> > Но все же хочу получить ответ на вопрос: где создается
> экземпляр
> > form1?
>
>
> Покажите плиз как его создать то?

А никак. Пока не сможешь четко понимать, какой смысл имеет каждое написанное тобой слово в твоей проге, дальше идти тебе не стоит


Сергей М.   (2008-03-28 00:31:00) [5]


> где создается экземпляр
> > form1?
>
>
> Покажите плиз как его создать то?
>


Вот как ты ни упирался, а таки придется двинуть к терапевту)

Какие тебе нафих "ресурсы в dll", если ты основне знаешь ?)


Igor23   (2008-03-28 00:27:00) [6]


> Но все же хочу получить ответ на вопрос: где создается экземпляр
> form1?


Покажите плиз как его создать то?


DrPass   (2008-03-27 11:47:00) [7]


> Но все же хочу получить ответ на вопрос: где создается экземпляр
> form1?

Кстати, да. Не обратил внимания. Это, собссно, и причина


clickmaker   (2008-03-27 11:30:00) [8]


> в стандартном приложении это работает...

запусти отладчик - он помогает
Это я тебе как доктор говорю


Терапевт   (2008-03-27 03:00:00) [9]

>DrPass ©   (27.03.08 01:08) [10] В принципе согласен -)
Но все же хочу получить ответ на вопрос: где создается экземпляр form1?


DrPass   (2008-03-27 01:08:00) [10]

uses
ShareMem,
SysUtils,
Classes,
Unit1 in 'Unit1.pas'


Аналогично, добавить ShareMem в uses в dpr-файле приложения, причем в самый верх.
Еще не помешало бы передать в dll объекты Application и Screen...


Igor23   (2008-03-26 22:43:00) [11]

В обычном проекте все работает, а вот если из длл вызывать то ошибка по адресу.... а потом форма сама вылетает, так думаю что dll почему то не признаёт в formcreate это:  with TBOSS.Create(Dxspriteengine1.Engine.Parent) do и with TPlayerSprite.Create(Dxspriteengine1.Engine) do

описание таково:
type
 TBoSS = class(TImageSprite)
  protected
     procedure DoMove(MoveCount: Integer); override;
     procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
 public
   constructor Create(AParent: TSprite); override;
   destructor Destroy; override;
 end;

  TPlayerFa = class(TImageSprite)
  protected
   procedure DoCollision(Sprite: TSprite; var Done: Boolean); override;
   procedure DoMove(MoveCount: Integer); override;
  public
   constructor Create(AParent: TSprite); override;
   destructor Destroy; override;
 end;
...................................................................
..................................................................
constructor TBOSS.Create(AParent: TSprite);
begin
 inherited Create(AParent);
 Image := form1.DXImageList1.Items.Find('BOSS');
 Width := Image.Width;
 Height := Image.Height;
end;

constructor TPlayerFa.Create(AParent: TSprite);
begin
 inherited Create(AParent);
 Image := form1.DXImageList1.Items.Find('Pula');
 Width := Image.Width;
 Height := Image.Height;
  Collision;
end;
в стандартном приложении это работает...а почему в dll не хочет не пойму, вроде используется такая же Form1


Igor23   (2008-03-26 22:30:00) [12]


> А не в dll код работает нормально?


дв  все в норме


Терапевт   (2008-03-26 22:20:00) [13]

А не в dll код работает нормально?


Igor23   (2008-03-26 21:46:00) [14]


> Выслал 10 рублей


спасибо большое за спонсорскую помощь в развитие сего проекта, теперь наберу в помощь высококвалифицированных спецов с достойной оплатой, всё ок бабки теперь у меня есть ;-)


Igor23   (2008-03-26 21:37:00) [15]


> Image := form1.dxImageList1.Items.Find('BOSS');


писал и без form1 не пойму млин после таких постов к ПСИХИАТРУ пойду ))


Терапевт   (2008-03-26 20:55:00) [16]

Как минимум, в этом:
Image := form1.dxImageList1.Items.Find('BOSS');

Я бы послал к хирургу...


Johnmen   (2008-03-26 20:46:00) [17]


> ПОМОГИТЕ КТО ЧЕМ МОЖЕТ

Выслал 10 рублей.


Igor23   (2008-03-26 20:41:00) [18]


> К терапевту.


спасибо за  ах...ное пояснение, а я то думал в чом проблема ))))


Сергей М.   (2008-03-26 18:45:00) [19]

К терапевту.


Наверх

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