Конференция "Основная" » TIBataBase и DLL [D7, WinXP]
 
  • Сергей М. © (17.03.08 08:26) [40]

    > а в DoneDll: Form1.Free


    > Убрав DoneDll все стало работать


    Те же фаберже, только вид сбоку - где-то присутствует попытка повторного уничтожения объекта, только в д.сл. этим объектом является объект-форма.
  • Maxick © (17.03.08 09:02) [41]
    По логике вещей - да. Но не вижу где.

    function InitDll():boolean; stdcall;
    begin
    Form1:= TForm1.Create(Application);
    Result:= true;
    end;

    function DoneDll():boolean; stdcall;
    begin
    Form1.Free;
    Result:= true;
    end;

    Function ShowForm(): boolean; stdcall;
    begin
    form1.show;
    Result:= true;
    end;



    Вызыв:
    var//глабальные переменные
    hdll: THandle;
    ..OnCreate(sender);

    begin
    ...
    hdll:=LoadLibrary('zzz.dll');
    @InitDll:= getprocadress(hdll,'InitDll');
    ItitDll;
    ...
    OnDestroy
    DaneDll;
    FreeLibrary(hdll);
    ...
    OnClick (кнопочка на главной форме)
    ShowForm;



    Тоесть все по класической схеме.
  • Сергей М. © (17.03.08 09:26) [42]

    > Form1:= TForm1.Create(Application);


    Application здесь от балды написано ?
    Или ты понимаешь смысл именно такого указания ?
  • Сергей М. © (17.03.08 09:30) [43]
    stdcall тоже от балды указано ?
    Это, конечно, не принципиально, но нельзя же бездумно сдувать чужой код, "заточенный" под чиную специфику)
  • Maxick © (17.03.08 10:08) [44]

    > Form1:= TForm1.Create(Application);

    Сделано для указания родителя, вовсе не бездумно. Мне нужно, чтоб наследовала форма некоторые свойства от Application.
    А по поводу StdCall - это для того, чтоб работали мой длл не только с моим приложением. Теорию я знаю, и бездумно не сдираю чужие коды - этож класика ...
  • Leonid Troyanovsky © (17.03.08 10:13) [45]

    > Maxick ©   (17.03.08 10:08) [44]

    > А по поводу StdCall - это для того, чтоб работали мой длл
    > не только с моим приложением. Теорию я знаю, и бездумно

    Сказка про белого бычка.

    --
    Regards, LVT.
  • Maxick © (17.03.08 10:48) [46]

    > Leonid Troyanovsky ©   (17.03.08 10:13) [45]

    а попробуй без соглашения CtdCall вызвать функцию из DLL написаной на Delphi в С++...
  • Сергей М. © (17.03.08 12:37) [47]

    > Сделано для указания родителя, вовсе не бездумно. Мне нужно,
    >  чтоб наследовала форма некоторые свойства от Application.


    Ни "родительские" ни "наследственные" отношения не имеют к параметру Owner никакого отношения.

    Owner - это владелец, а не "родитель" и тем более не "предок".


    > Теорию я знаю, и бездумно не сдираю чужие коды - этож класика


    Да-да, оно заметно.


    > попробуй без соглашения CtdCall вызвать функцию из DLL написаной
    > на Delphi в С++


    Ну и какой нафих Application в C++ ? И c какой луны там взялся TIBDatabase, который ты вознамерился передать в свою dll ?
 
Конференция "Основная" » TIBataBase и DLL [D7, WinXP]
Есть новые Нет новых   [134484   +45][b:0][p:0.001]