-
ПОМОГИТЕ КТО ЧЕМ МОЖЕТ
Вызов .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;
-
К терапевту.
-
> К терапевту.
спасибо за ах...ное пояснение, а я то думал в чом проблема ))))
-
> ПОМОГИТЕ КТО ЧЕМ МОЖЕТ
Выслал 10 рублей.
-
Как минимум, в этом:
Image := form1.dxImageList1.Items.Find('BOSS');
Я бы послал к хирургу...
-
> Image := form1.dxImageList1.Items.Find('BOSS');
писал и без form1 не пойму млин после таких постов к ПСИХИАТРУ пойду ))
-
> Выслал 10 рублей
спасибо большое за спонсорскую помощь в развитие сего проекта, теперь наберу в помощь высококвалифицированных спецов с достойной оплатой, всё ок бабки теперь у меня есть ;-)
-
А не в dll код работает нормально?
-
> А не в dll код работает нормально?
дв все в норме
-
В обычном проекте все работает, а вот если из длл вызывать то ошибка по адресу.... а потом форма сама вылетает, так думаю что 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
-
uses
ShareMem,
SysUtils,
Classes,
Unit1 in 'Unit1.pas'
Аналогично, добавить ShareMem в uses в dpr-файле приложения, причем в самый верх.
Еще не помешало бы передать в dll объекты Application и Screen...
-
>DrPass © (27.03.08 01:08) [10] В принципе согласен -)
Но все же хочу получить ответ на вопрос: где создается экземпляр form1?
-
> в стандартном приложении это работает...
запусти отладчик - он помогает
Это я тебе как доктор говорю
-
> Но все же хочу получить ответ на вопрос: где создается экземпляр
> form1?
Кстати, да. Не обратил внимания. Это, собссно, и причина
-
> Но все же хочу получить ответ на вопрос: где создается экземпляр
> form1?
Покажите плиз как его создать то?
-
> где создается экземпляр
> > form1?
>
>
> Покажите плиз как его создать то?
>
Вот как ты ни упирался, а таки придется двинуть к терапевту)
Какие тебе нафих "ресурсы в dll", если ты основ не знаешь ?)
-
> Igor23 (28.03.08 00:27) [14]
>
> > Но все же хочу получить ответ на вопрос: где создается
> экземпляр
> > form1?
>
>
> Покажите плиз как его создать то?
А никак. Пока не сможешь четко понимать, какой смысл имеет каждое написанное тобой слово в твоей проге, дальше идти тебе не стоит
-
> Igor23 (28.03.08 00:27) [14]
> Покажите плиз как его создать то?
Дык, так прямо и создавать.
Кто ж тебя, болезного, принудил к длл.
--
Regards, LVT.
-
> ПОМОГИТЕ КТО ЧЕМ МОЖЕТ
C такими призывами в переходах надо стоятьЮ ане по форумам лазать.
-
> C такими призывами в переходах надо стоятьЮ ане по форумам
> лазать.
и где ты тут призыв увидел.....нах ты вообще откликаешься и засираешь ветку?