?? make.~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('文本數(shù)據(jù)庫為空.');
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
if m_startAddress.text = '0' then
begin
ShowMessage('FLASH地址沒有設(shè)置');
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 = '數(shù)碼相框' 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 = '開機(jī)動畫' 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);
//制作資源內(nèi)容并保存
//FileHeader := 0;
//StartAddress := FlashStartAddress;//StrToInt(m_startAddress.Text);
FileLen := 0;
TotalLen := 0;
StartAddress := 0;
try
FileName := ExtractFilePath(Application.ExeName) + szFileName ;
//創(chuàng)建要保存的文件
AssignFile(res_fw, FileName);
rewrite(res_fw);
//每個文件偏移地址4個字節(jié),長度四個字節(jié)
FileHeader := (s_grid.RowCount-1) * 8;
//創(chuàng)建文件表
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;
//創(chuàng)建文件內(nèi)服
for i:=1 to s_grid.RowCount-1 Do
begin
AssignFile(res_f, s_grid.Cells[2,i]);
Reset(res_f);
//寫文件數(shù)據(jù)
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地址已設(shè)置';
end
end;
end.
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -