Projeniz hangi bpl dosyalarını kullanıyor?

Yazdığınız makaleleri ve üyelerimizin işine yarayacağını düşündüğünüz kodlarınızı gönderebilirsiniz. Bu foruma soru sormayın!
Cevapla
Kullanıcı avatarı
sadettinpolat
Moderator
Mesajlar: 2131
Kayıt: 07 Ara 2003 02:51
Konum: Ankara
İletişim:

Projeniz hangi bpl dosyalarını kullanıyor?

Mesaj gönderen sadettinpolat »

kullanılan bpl dosyalarını görmek için Project / Options / Packages / Built With Runtime Packages seçeneğini işaretlemeniz gerekir.

Unit1.dfm

Kod: Tümünü seç

object Form1: TForm1
  Left = 96
  Top = 107
  Width = 521
  Height = 457
  Caption = 'Package Information'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = True
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object TreeView1: TTreeView
    Left = 0
    Top = 0
    Width = 513
    Height = 430
    Align = alClient
    Indent = 19
    TabOrder = 0
  end
  object DBEdit1: TDBEdit
    Left = 368
    Top = 16
    Width = 121
    Height = 21
    TabOrder = 1
    Visible = False
  end
  object Chart1: TChart
    Left = 400
    Top = 0
    Width = 89
    Height = 58
    BackWall.Brush.Color = clWhite
    BackWall.Brush.Style = bsClear
    Title.Text.Strings = (
      'TChart')
    TabOrder = 2
    Visible = False
  end
end
Unit1.pas

Kod: Tümünü seç


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ComCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Mask,
  DBCtrls;

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    DBEdit1: TDBEdit;
    Chart1: TChart;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  ContNode, ReqNode: TTreeNode;

procedure ShowInfoProc (const Name: string;
  NameType: TNameType; Flags: Byte; Param: Pointer);
var
  FlagStr: string;
begin
  FlagStr := ' ';
  if Flags and ufMainUnit <> 0 then
    FlagStr := FlagStr + 'Main Unit ';
  if Flags and ufPackageUnit <> 0 then
    FlagStr := FlagStr + 'Package Unit ';
  if Flags and ufWeakUnit <> 0 then
    FlagStr := FlagStr + 'Weak Unit ';
  if FlagStr <> ' ' then
    FlagStr := ' (' + FlagStr + ')';
  with Form1.TreeView1.Items do
    case NameType of
      ntContainsUnit:
        AddChild (ContNode, Name + FlagStr);
      ntRequiresPackage:
        AddChild (ReqNode, Name);
    end;
end;

function ForEachModule (HInstance: Longint;
  Data: Pointer): Boolean;
var
  Flags: Integer;
  ModuleName, ModuleDesc: string;
  ModuleNode: TTreeNode;
begin
  with Form1.TreeView1.Items do
  begin
    SetLength (ModuleName, 200);
    GetModuleFileName (HInstance,
      PChar (ModuleName), Length (ModuleName));
    ModuleName := PChar (ModuleName); // fixup
    ModuleNode := Add (nil, ModuleName);

    // get description and add fixed nodes
    ModuleDesc := GetPackageDescription (PChar (ModuleName));
    ContNode := AddChild (ModuleNode, 'Contains');
    ReqNode := AddChild (ModuleNode, 'Requires');

    // add information if the module is a package
    GetPackageInfo (HInstance, nil,
      Flags, ShowInfoProc);
    if ModuleDesc <> '' then
    begin
      AddChild (ModuleNode,
        'Description: ' + ModuleDesc);
      if Flags and pfDesignOnly = pfDesignOnly then
        AddChild (ModuleNode, 'Design Only');
      if Flags and pfRunOnly = pfRunOnly then
        AddChild (ModuleNode, 'Run Only');
    end;
  end;
  Result := True;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  EnumModules(ForEachModule, nil);
end;

end.

Sonuç

Kod: Tümünü seç


C:\Program Files\Borland\Delphi7\Projects\bplinfo\Project2.exe
C:\WINDOWS\System32\vcldb70.bpl
C:\WINDOWS\System32\dbrtl70.bpl
C:\WINDOWS\System32\tee70.bpl
C:\WINDOWS\System32\vcl70.bpl
C:\WINDOWS\System32\rtl70.bpl

package support routines

CurrentGroup variable
Keeps track of which objects are associated with which packages.

EnumModules procedure
Executes a callback for all the modules in an application.

EnumResourceModules procedure
Executes a callback for all resource modules in an application.

FinalizePackage procedure
Finalizes the specified package (.bpl file).

GetPackageDescription function
Returns the description resource from a package.

GetPackageInfo procedure
Enumerates all the units and required packages for a package.

InitializePackage procedure
Validates and initializes a given package.

LibModuleList variable
Lists module records for enumeration procedures.

LoadPackage function
Loads a specified package.

SafeLoadLibrary function
Safe and simple library loading.

UnloadPackage procedure
Unloads a package.

http://www.marcocantu.com/code/md6htm/PackInfo.htm
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Öncelikle verdiğin bilgi için teşekkürler,

Peki hocam bu ne işe yarıyor ?
Neden böyle birşeye ihtiyaç duyulur ?

Saygılar

Oğuz
Kullanıcı avatarı
gkimirti
Admin
Mesajlar: 1956
Kayıt: 02 Eyl 2003 04:44
Konum: İstanbul

Mesaj gönderen gkimirti »

eger projeni runtime paketler ile derlediysen (Project-Options-Packages de build it with runtime packages isaretli ise), projenin boyutu 3-4 kat azalmakta, ama calısabilmek icin bir takım bpl lere ihtiyac duymakta.
bu paketlerin neler oldugunu delphi kurulmamıs bir makinada programı calıstırarak ta ogrenebilirsin; bu uzun yolu,
yada boyle bir kod ile (gerci denemedim).
ÜŞENME,ERTELEME,VAZGEÇME
oguzozturk74
Kıdemli Üye
Mesajlar: 574
Kayıt: 01 Şub 2004 12:29
Konum: Erdemli - MERSİN

Mesaj gönderen oguzozturk74 »

Sağol Gökmen abi :lol:
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7603
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

1. seminerde ve sitedeki Delphi'ye Giriş ve IDE makalesinde detaylar var.

Ben yaptığım denemelerde %99'a varan boyut küçülmesini gördüm. 4 MB'lık dosya 40 KB'a düşmüştü.

Kolay gelsin.
Cevapla