powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Главная форма из bpl.
12 сообщений из 12, страница 1 из 1
Главная форма из bpl.
    #39669384
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пробую наваять консольную приложуху которая бы подымала из пакета главную форму.

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
program mynewprogram;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus;

procedure LoadMainForm;
var
  FormClass: TFormClass;
  FmMainForm: TForm;
  Handle: HModule;
begin
  Handle := LoadPackage('FmMainForm.bpl');
  if Handle > 0 then
  begin
    FormClass := TFormClass(GetClass('TFmMainForm'));
    if Assigned(FormClass) then
    begin
      FmMainForm := FormClass.Create(Application);
    end
    else
      ShowMessage('Form class not found');

    UnloadPackage(Handle);
  end
  else
    ShowMessage('Package not found');
end;

begin
  Application.Initialize;
  Application.Run;
  LoadMainForm;
end.



Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
unit f_main_form;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Menus;

type
  TFmMainForm = class(TForm)
    MainMenu1: TMainMenu;
    N11: TMenuItem;
    N111: TMenuItem;
    N21: TMenuItem;
    N221: TMenuItem;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FmMainForm: TFmMainForm;

implementation
{$R *.dfm}

initialization
  RegisterClass(TFmMainForm);

end.



В результате срабатывает: ShowMessage('Form class not found');

Что я упустил?
Тыкните носом плиз.
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669439
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Link with Runtime Packages стоит ?
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669449
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr Link with Runtime Packages стоит ?

стоит
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669458
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669459
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и по идее, сначала создаём форму, а потом запускам Application.Run
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669480
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBrНу и по идее, сначала создаём форму, а потом запускам Application.Run

Пробовал.
Но тут раньше проблема.
Пакет грузит а вот класс из пакета не может получить.
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669497
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr тынц

Получилось. Спасибо!

Есть только 1 проблема: Приложение сразу закрывается поскольку консольное.
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669499
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr тынц
Странный у них код:
Код: pascal
1.
2.
3.
4.
5.
if Assigned(<FormName>) then
  begin
  // Destroy the instance if assigned
  <FormName>.Destroy;
  end;

Почему не просто <FormName>.Free; ?
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669505
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpПочему не просто <FormName>.Free; ?
Они не знают что Free проверяет на nil
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669548
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBralekcvpПочему не просто <FormName>.Free; ?
Они не знают что Free проверяет на nil
Ну да, смешно, понаберут индусов по объявлению...
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669556
Mironico
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Походу грузить главную форму из консоли плохая идея...
...
Рейтинг: 0 / 0
Главная форма из bpl.
    #39669558
schi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBr тынц

Тынц вроде как не отвечает на вопрос ТС, в тынце создают форму и показывают ее внутри методов пакета. Доставать класс из динамически загружаемого пакета затруднительно. Возможно стоит сделать экспортируемую из пакета функцию, возвращающую ссылку на класс или разбираться с манглингом имен в Delphi, тип-то эскпортируется из пакета.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Главная форма из bpl.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]