Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.09.26;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.033 c
1-1094505200
массив
2004-09-07 01:13
2004.09.26
Как объяснить следующий код ?


9-1086290586
Vin_Ghost
2004-06-03 23:23
2004.09.26
Туман войны


14-1094474342
Shiza
2004-09-06 16:39
2004.09.26
В чём проблема с компом?


1-1094637479
Jay
2004-09-08 13:57
2004.09.26
TMainMenu


4-1092583943
фантазер
2004-08-15 19:32
2004.09.26
hBitmap





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский