Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

BPL   Найти похожие ветки 

 
ORMADA ©   (2004-09-13 14:04) [0]

Доб день!
Вот стал юзать BPL и задался вопросом как программно можно узнать какие bpl использует в своей работе моя bpl.
Обычно делаю так вызываю bpl на машине на которой дельфи не было и в помине и при запуске ф-ии из bpl программа выдаёт что такие то bpl не найдены, вот так по одной их и собираю.
может можно как то программно узнать имена bpl ?


 
Reindeer Moss Eater ©   (2004-09-13 14:12) [1]

1. Project-Options
2. Ctrl+F + Find in files + "LoadPackage"


 
ORMADA ©   (2004-09-13 14:50) [2]

Reindeer Moss Eater :)
вопрос в том как это сделать программно
т.к. у меня могут быть bpl созданные другими разработчиками из команды


 
ORMADA ©   (2004-09-14 08:07) [3]

Вот нашёл пример работы с PackageInfo
но всё равно он выдаёт не все НЕОБХОДИМЫЕ BPL
проверял на своей bpl ей надо 18 bpl для работы а программы находит только 13, почему ?

program PkgInfo;

uses
 Forms,
 Dialogs,
 SysUtils,
 PkgMain in "PkgMain.pas" {PackInfoForm};

{$R *.RES}

var
 OpenDialog: TOpenDialog;
begin
 if (ParamCount > 0) and FileExists(ParamStr(1)) then
   PkgName := ParamStr(1)
 else
 begin
   OpenDialog := TOpenDialog.Create(Application);
   OpenDialog.DefaultExt := "*.bpl";
   OpenDialog.Filter := "Packages (*.bpl)|*.bpl|Delphi 3 Packages " +
     "(*.dpl)|*.dpl";
   if OpenDialog.Execute then
     PkgName := OpenDialog.FileName;
 end;
 if PkgName <> "" then
 begin
   Application.Initialize;
   Application.CreateForm(TPackInfoForm, PackInfoForm);
   Application.Run;
 end;
end.
unit PkgMain;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TPackInfoForm = class(TForm)
   GroupBox1: TGroupBox;
   DsgnPkg: TCheckBox;
   RunPkg: TCheckBox;
   BuildCtl: TRadioGroup;
   GroupBox2: TGroupBox;
   GroupBox3: TGroupBox;
   Button1: TButton;
   Label1: TLabel;
   DescEd: TEdit;
   memContains: TMemo;
   memRequires: TMemo;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
 end;

var
 PackInfoForm: TPackInfoForm;
 PkgName: string; // This is assigned in project file

implementation

{$R *.DFM}

procedure PackageInfoCallback(const Name: string; NameType: TNameType;
 Flags: Byte; Param: Pointer);
var
 AddName: string;
 Memo: TMemo;
begin
 Assert(Param <> nil);
 AddName := Name;
 case NameType of
   ntContainsUnit: Memo := TPackInfoForm(Param).memContains;
   ntRequiresPackage: Memo := TPackInfoForm(Param).memRequires;
 else
   Memo := nil;
 end;
 if (Memo <> nil) then
 begin
   if Memo.Text <> "" then
     AddName := ", " + AddName;
   Memo.Text := Memo.Text + AddName;
 end;
end;

procedure TPackInfoForm.FormCreate(Sender: TObject);
var
 PackMod: HMODULE;
 Flags: Integer;
begin
 // Since we only need to get into the package"s resources,
 // LoadLibraryEx with LOAD_LIBRARY_AS_DATAFILE provides a speed-
 // efficient means for loading the package.
 PackMod := LoadLibraryEx(PChar(PkgName), 0, LOAD_LIBRARY_AS_DATAFILE);
 if PackMod = 0 then
   Exit;
 try
   GetPackageInfo(PackMod, Pointer(Self), Flags, PackageInfoCallback);
 finally
   FreeLibrary(PackMod);
 end;
 Caption := "Package Info: " + ExtractFileName(PkgName);
 DsgnPkg.Checked := Flags and pfDesignOnly <> 0;
 RunPkg.Checked := Flags and pfRunOnly <> 0;
 if Flags and pfNeverBuild <> 0 then
   BuildCtl.ItemIndex := 1;
 DescEd.Text := GetPackageDescription(PChar(PkgName));
end;

procedure TPackInfoForm.Button1Click(Sender: TObject);
begin
 Close;
end;

end.




Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
1-1094731836
V l a d i m i r
2004-09-09 16:10
2004.09.26
Текст и таблицы в Word


1-1094751920
GSS
2004-09-09 21:45
2004.09.26
TPanel


3-1093961641
PiOnEr
2004-08-31 18:14
2004.09.26
Помогите с кавычкой!


4-1091673171
Cash
2004-08-05 06:32
2004.09.26
Чтоб модем в колонки пищал.


14-1094283240
Stany
2004-09-04 11:34
2004.09.26
биллингова система