• Igor23 (26.03.08 17:50) [0]
    ПОМОГИТЕ КТО ЧЕМ МОЖЕТ
    Вызов .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;
  • Сергей М. © (26.03.08 18:45) [1]
    К терапевту.
  • Igor23 (26.03.08 20:41) [2]

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


    спасибо за  ах...ное пояснение, а я то думал в чом проблема ))))
  • Johnmen © (26.03.08 20:46) [3]

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

    Выслал 10 рублей.
  • Терапевт (26.03.08 20:55) [4]
    Как минимум, в этом:
    Image := form1.dxImageList1.Items.Find('BOSS');

    Я бы послал к хирургу...
  • Igor23 (26.03.08 21:37) [5]

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


    писал и без form1 не пойму млин после таких постов к ПСИХИАТРУ пойду ))
  • Igor23 (26.03.08 21:46) [6]

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


    спасибо большое за спонсорскую помощь в развитие сего проекта, теперь наберу в помощь высококвалифицированных спецов с достойной оплатой, всё ок бабки теперь у меня есть ;-)
  • Терапевт (26.03.08 22:20) [7]
    А не в dll код работает нормально?
  • Igor23 (26.03.08 22:30) [8]

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


    дв  все в норме
  • Igor23 (26.03.08 22:43) [9]
    В обычном проекте все работает, а вот если из длл вызывать то ошибка по адресу.... а потом форма сама вылетает, так думаю что 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
  • DrPass © (27.03.08 01:08) [10]
    uses
    ShareMem,
    SysUtils,
    Classes,
    Unit1 in 'Unit1.pas'



    Аналогично, добавить ShareMem в uses в dpr-файле приложения, причем в самый верх.
    Еще не помешало бы передать в dll объекты Application и Screen...
  • Терапевт (27.03.08 03:00) [11]
    >DrPass ©   (27.03.08 01:08) [10] В принципе согласен -)
    Но все же хочу получить ответ на вопрос: где создается экземпляр form1?
  • clickmaker © (27.03.08 11:30) [12]

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

    запусти отладчик - он помогает
    Это я тебе как доктор говорю
  • DrPass © (27.03.08 11:47) [13]

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

    Кстати, да. Не обратил внимания. Это, собссно, и причина
  • Igor23 (28.03.08 00:27) [14]

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


    Покажите плиз как его создать то?
  • Сергей М. © (28.03.08 00:31) [15]

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


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

    Какие тебе нафих "ресурсы в dll", если ты основ не знаешь ?)
  • DrPass © (28.03.08 09:54) [16]

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

    А никак. Пока не сможешь четко понимать, какой смысл имеет каждое написанное тобой слово в твоей проге, дальше идти тебе не стоит
  • Leonid Troyanovsky © (28.03.08 23:12) [17]

    > Igor23   (28.03.08 00:27) [14]

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

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

    --
    Regards, LVT.
  • Denis__ © (29.03.08 09:03) [18]

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

    C такими призывами в переходах надо стоятьЮ ане по форумам лазать.
  • Igor23 (29.03.08 12:56) [19]

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


    и где ты тут призыв увидел.....нах ты вообще откликаешься и засираешь ветку?
Есть новые Нет новых   [134433   +22][b:0][p:0.001]