⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 make.pas

📁 自己写的把gif合成一个bin文件的程序
💻 PAS
字号:
unit Make;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, Grids, DBGrids, ComCtrls;

type
  TForm1 = class(TForm)
    bt_add: TBitBtn;
    s_grid: TStringGrid;
    bt_close: TBitBtn;
    od: TOpenDialog;
    StatusBar1: TStatusBar;
    bt_del: TBitBtn;
    bt_done: TBitBtn;
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Label1: TLabel;
    m_startAddress: TComboBox;
    procedure bt_addClick(Sender: TObject);
    procedure bt_closeClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure s_gridDblClick(Sender: TObject);
    procedure bt_delClick(Sender: TObject);
    procedure bt_doneClick(Sender: TObject);
    procedure m_startAddressChange(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.bt_addClick(Sender: TObject);
begin

s_grid.RowCount := s_grid.RowCount + 1;
s_grid.Cells[1,s_grid.RowCount-1] := IntToStr(s_grid.RowCount-1);
end;

procedure TForm1.bt_closeClick(Sender: TObject);
begin
Exit;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
 i :integer;
 F: TextFile;
 S: string;

begin
  //s_grid.RowCount := s_grid.RowCount-1;
if FileExists(ExtractFilePath(Application.ExeName) + '\res_list.txt') = FALSE  then
   begin
      ShowMessage('文本数据库为空.');
   end
else
   begin
      AssignFile(F, ExtractFilePath(Application.ExeName) + '\res_list.txt');
      Reset(F);
    //test code

   // ShowMessage(inttostr(len));

      i :=1;
      while not EOF(F) Do
      begin
        readln(F, s);
        if Length(s) > 10 then
        begin
        if i>=2  then s_grid.RowCount := s_grid.RowCount + 1;
        s_grid.Cells[1,i] := IntToStr(i);
        s_grid.Cells[2,i] := s;
        i := i + 1;
        end
      end ;
      CloseFile(F);
end;

s_grid.Cells[1,0] := '编号';
s_grid.Cells[2,0] := '文件路径';
end;

procedure TForm1.s_gridDblClick(Sender: TObject);
  var y:integer;
 begin

  //x := s_grid.Col;
  y := s_grid.Row;
    if od.Execute then
    begin
         s_grid.Cells[2,y] := ExtractFilePath(od.FileName) + ExtractFileName(od.FileName);
    end
end;

procedure TForm1.bt_delClick(Sender: TObject);
begin
if s_grid.RowCount > 2 then
begin
    s_grid.RowCount := s_grid.RowCount - 1;
end

end;

procedure TForm1.bt_doneClick(Sender: TObject);
var
i:integer;
FileName:String;
szFileName:String;
F: TextFile;
res_f:file of Byte;
res_fw:file of byte;
FileLen : integer;
FileHeader : integer;
StartAddress:integer;
TempInt:integer;
TotalLen:integer;
TempByte : array[0..3] of byte;

begin

  StartAddress := 0;

    if m_startAddress.text = '0' then
    begin
     ShowMessage('FLASH地址没有设置');
     exit;
    end ;

    if m_startAddress.Text = '效果音' then
    begin
       StartAddress := 3342336;// 0x00330000;
       szFileName := 'voice.bin';
    end
    else if m_startAddress.Text = '可视主题' then
    begin
       StartAddress := 1114112;//0x00110000;
       szFileName   := 'vcall.bin';
    end
    else if m_startAddress.Text = '数码相框' then
    begin
       StartAddress := 1245184;//0x00130000;
       szFileName := 'dpf.bin';
    end
    else if m_startAddress.Text = '屏保' then
    begin
       StartAddress := 3145728;//0x00300000;
       szFileName := 'scr.bin'
    end
    else if m_startAddress.Text = '日历' then
    begin
       StartAddress := 2883584;//0x002c0000;
       szFileName := 'cldr.bin';
    end
    else if m_startAddress.Text = 'UI' then
    begin
       StartAddress := 1835008;//0x001c0000;
       szFileName := 'uires.bin';
    end
    else if m_startAddress.Text = '开机动画' then
    begin
       StartAddress := 3014656; //0x002E0000
       szFileName   := 'switch.bin';
    end
    else if m_startAddress.Text = '桌面主题' then
    begin
      StartAddress := 2752512;//0x002a0000
      szFileName   := 'desktop.bin';
    end;
    //end;


//保存资源列表
    FileName :=  ExtractFilePath(Application.ExeName) + '\res_list.txt';
    if FileExists(FileName) then DeleteFile(FileName);
    AssignFile(F, FileName);
    //ShowMessage(Application.ExeName+ '\res_list.txt');
    Rewrite(F);

    //s_grid.RowCount := s_grid.RowCount-1;
    for i:=1 to s_grid.RowCount-1   Do
      if i = s_grid.RowCount-1 then Write(F, s_grid.Cells[2, i])
      else
           Writeln(F, s_grid.Cells[2,i]);
    next ;

    CloseFile(F);

//制作资源内容并保存
//FileHeader := 0;
//StartAddress := FlashStartAddress;//StrToInt(m_startAddress.Text);
FileLen := 0;
TotalLen := 0;

try
    FileName :=   ExtractFilePath(Application.ExeName) + szFileName ;

    //创建要保存的文件
    AssignFile(res_fw, FileName);
    rewrite(res_fw);

    //每个文件偏移地址4个字节,长度四个字节
    FileHeader := (s_grid.RowCount-1) * 8;

    //创建文件表
    for i:=1 to s_grid.RowCount-1 Do
    begin
        AssignFile(res_f, s_grid.Cells[2,i]);
        Reset(res_f);
        //写文件起始地址
        TempInt  :=  StartAddress+FileHeader+TotalLen;
        move(TempInt, TempByte[0], 4);
        Write(res_fw, TempByte[0]);
        Write(res_fw, TempByte[1]);
        Write(res_fw, TempByte[2]);
        Write(res_fw, TempByte[3]);

        //写文件长度
        FileLen   := FileSize(res_f);
        TotalLen  := TotalLen + FileLen;
         
        move(FileLen, TempByte[0],4);
        Write(res_fw, TempByte[0]);
        Write(res_fw, TempByte[1]);
        Write(res_fw, TempByte[2]);
        Write(res_fw, TempByte[3]);

        CloseFile(res_f);
   
    end;
    //创建文件内服
   for i:=1 to s_grid.RowCount-1 Do
    begin
        AssignFile(res_f, s_grid.Cells[2,i]);
        Reset(res_f);
        //写文件数据
        while not EOF(res_f) Do
        Begin
            Read(res_f, TempByte[0]);
            Write(Res_Fw, TempByte[0]);
        End;
        CloseFile(res_f);
    end;

    CloseFile(Res_Fw);
except
   ShowMessage('Write Error');
end;//end of try
end;

procedure TForm1.m_startAddressChange(Sender: TObject);
begin
   if m_startAddress.Text <> '0' then
    begin
      Label1.Caption := 'FLASH地址已设置';
    end
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -