先在有一些单元和dpk都是程序用到的各种孔件,现在把他们做在同意个package中
以方便一次安装 
应该如何进行工作 ?

解决方案 »

  1.   

    用DELPHI向导NEW->package
    就OK了,在package增加控件 ADD
    然后编译就可以了!
      

  2.   

    自己封装一个类!如:
    {
      通讯包模块
      01:包头;
      02:数据段分割符;
      03:包尾;
      限制通讯包的长度为2048;
      数据段格式:
      数据名+‘:’+数据
      例如:#01+
      ‘LCNO:OC9987301000001’+
       #02+
       ‘CYNO:USD’+
       #02+
       #03
       数据包初始化:InitPackage
       数据打包:AddPackage
       数据解包:GetPackage
    }
    unit pkgUnit;interface
    uses
      Windows,Messages,Graphics,Controls,Forms,Dialogs,
      SysUtils,Classes;const
      ChmyOK = 0;
      ChmyErr_spExec = 1;
      CRLF = #13#10;
      ACC_OK = 'ok';  SPackageHead = #01;
      SPackageData = #02;
      SPackageEnd = #03;
      SPackageLength = 2048;type
      TSPkgData = array [1..SPackageLength] of char;
      TSPackage = class(TObject)
      private
        { private declarations }
         function GetItem(Hash :string):string;
         procedure SetItem(Hash :string;data :string);  public
        { public declarations }
         buf:TSPkgData;     //两种构建方法
      constructor Create(dd:TSPkgData);overload;virtual;
        constructor  Create;overload;virtual;
        property Item[Hash:string]:string read GetItem write SetItem;
        procedure GetPacket(var v:TSPkgData);
      end;implementationconstructor TSPackage.Create(dd:TSPkgData);
    begin
      Inherited Create;
      move(dd,buf,SPackageLength);
    end;constructor TSPackage.Create;
    begin
      buf[1] := SPackageHead;
      buf[2] := SPackageEnd;
    end;function TSPackage.GetItem(Hash:string):string;
    var
      i,j:integer;
      str:string;
      bb:boolean;
    //读取通讯包中的数据
    begin
      str:='';
      i:=1;
      j:=1;
      bb:=False;  //查找数据项
      while(true) do
      begin
        if(i>=SPackageLength)or(buf[i]=SPackageEnd)then break;
        if buf[i] = Hash[j] then inc(j)
        else j:=1;
        inc(i);
        if(j>Length(Hash))and(buf[i]=':')then
        begin
          bb:=true;
          break;
        end;
      end;  //读取数据项
      if(bb)then
      begin
        while(true) do
        begin
          inc(i);
          if(buf[i]=SPackageData)or(i>=SPackageLength) then break
          else str := str + buf[i];
        end;
      end;  //返回结果
      result := str;
    end;procedure TSPackage.SetItem(Hash:string;data:string);
    var
      i:integer;
      str:string;
    //写入数据项
    begin
      i:=1;
      str := Hash + ':' +data + SPackageData +  SPackageEnd;
      while(true) do
      begin
        if buf[i]=SPackageEnd then break;
        inc(i);
        if i>=SPackageLength then exit;
      end;
      if(i+Length(str)+2)>=SPackageLength then exit;
      move(str[1],buf[i],length(str));
    end;//读取通讯包
    procedure TSPackage.GetPacket(var v:TSPkgData);
    begin
      move(buf,v,SPackageLength);
    end;end.
      

  3.   

    kao 
    楼上的代码真恐怖
      

  4.   

    应该怎么设计contains
    和requires两个子句?