📄 unit1.pas
字号:
FileClose(iFileHandle);
end;
if num_org>(num_mod+num_filent) then button5.Click;
end;
end;
end;
procedure TForm1.Button10MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='快速刷新文件信息,自动把上一文件的结束地址自动输入到数据区框';
end;
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='';
end;
procedure TForm1.CheckBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='压缩文件,节省ROM空间';
end;
procedure TForm1.Button3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='开始向ROM中添加文件';
end;
procedure TForm1.Button4MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='显示文件名框起始地址位置的文件名';
end;
procedure TForm1.Button5MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='重新获取ROM中文件信息';
end;
procedure TForm1.Button9MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='保存文件名区及数据区内容';
end;
procedure TForm1.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='重新调用RomMaster,方便调试';
end;
procedure TForm1.CheckBox2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='要删除的文件为MOD模块';
end;
procedure TForm1.Button6MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='调用RomMaster删除ROM中文件';
end;
procedure TForm1.Button7MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='找查ROM中文件';
end;
procedure TForm1.Button8MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='将文件信息导出到文件中';
end;
procedure TForm1.LabeledEdit2MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='可以输入实际或虚拟地址,程序将自动转换,双击粘贴';
end;
procedure TForm1.LabeledEdit4MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='可以输入实际或虚拟地址,程序将自动转换,双击粘贴';
end;
procedure TForm1.labelededit1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='可以输入实际或虚拟地址,程序将自动转换,双击粘贴';
end;
procedure TForm1.LabeledEdit5MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='可以输入实际或虚拟地址,程序将自动转换,双击粘贴';
end;
procedure TForm1.name9MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='欢迎到泉州来玩!';
end;
procedure TForm1.Button11Click(Sender: TObject);
Var
Source:TFileStream;
Target:TFileStream;
Pin,Pout: PBYTE;
res:dword;
sourcelen,targetlen:dword;
begin
if (OpenDialog2.FileName<>'') then
begin
Source:=TFileStream.Create(OpenDialog2.FileName,fmOpenRead);
sourcelen:=Source.Size;
if sourcelen>=50000000 then begin FreeAndNil(Source); showmessage('太大了吧!'); exit; end;
if sourcelen>=600000 then
if MessageDlg('文件较大,计算时间会较长,是否继续?',mtConfirmation,[mbYes,mbNo],0)=mrno
then begin FreeAndNil(Source); exit; end;
Pin:=AllocMem(Source.Size);
Source.Read(Pin^,Source.Size);
Targetlen:=sourcelen-1;
Pout:=AllocMem(targetlen);
try
res:=Do_compress(Pin,sourcelen, Pout);
//i:=compress(Pout,@targetlen,Pin,sourcelen); //zlib
op_log('压缩后/原大小:['+inttostr(res)+'/'+inttostr(sourcelen)+'] '+ExtractFilename(OpenDialog2.FileName));
if debug then //在目录下生成压缩文件
begin
Target:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'cecompress_temp_file',fmCreate);
Target.WriteBuffer(Pout^,res);
op_log('已在程序目录下生成压缩文件:cecompress_temp_file!');
FreeAndNil(Target);
end;
finally
Freemem(Pin);
Freemem(Pout);
FreeAndNil(Source);
end;
end;
end;
procedure TForm1.CheckBox3Click(Sender: TObject);
begin
if CheckBox3.Checked=false then debug:=false else debug:=true;
end;
procedure TForm1.Button11MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='计算压缩后的大小,注意文件越大,计算时间会越长';
end;
procedure TForm1.del_btnClick(Sender: TObject);
var
iFileHandle:integer;
s:string;
//ms: TMemoryStream;
begin
s:=trim(labelededit3.Text);
if fileexists(opendialog1.FileName)and(s<>'') then
if get_rom_info()<>-1 then
begin
iFileHandle:=FileOpen(opendialog1.FileName, fmOpenReadWrite);
if iFileHandle>0 then
begin
if (num_filent>0)and(num_filent<=4096) then //增加上限
begin
if del_f_file(iFileHandle,s)=0 then
if del_m_file(iFileHandle,s)=0 then
begin
//showmessage('未找到文件 "'+s+'"');
op_log('未找到文件 "'+s+'"');
FileClose(iFileHandle);
exit;
end;
end;
end;
FileClose(iFileHandle);
if (get_rom_info()<>-1) then num_org:= num_mod +num_filent; //重读信息
end;
end;
procedure TForm1.del_btnMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='删除ROM中文件,自动识别M/F类型';
end;
procedure TForm1.CheckBox3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='打开调试模式';
end;
procedure TForm1.Button1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='打开ROM文件';
end;
procedure TForm1.Button2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='选择要添加的文件';
end;
procedure TForm1.Label3MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='数据区的可用字节数';
end;
procedure TForm1.Label2MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
Statusbar1.Panels[0].Text:='现已可以增加文件数,不受此限制';
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
begin
if CheckBox2.Checked=true then
SetWindowPos(handle,HWND_TOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW)
else SetWindowPos(handle,HWND_NOTOPMOST,Left,Top,Width,Height,SWP_SHOWWINDOW);
end;
procedure TForm1.Load_del_BtnClick(Sender: TObject);
var
str:tstringlist;
s:string;
i:integer;
begin
if Opendialog1.FileName='' then op_log('请先选择ROM文件!')
else
with opendialog3 do
if execute then
begin
str:=tstringlist.Create;
str.LoadFromFile(Filename);
for i:=0 to str.Count-1 do
begin
s:=trim(str.Strings[i]);
if s<>'' then
begin
Labelededit3.Text:=s;
del_btn.Click;
end;
end;
end;
end;
procedure TForm1.Load_del_BtnMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Statusbar1.Panels[0].Text:='批量删除文件。列表为文件文件,每个文件名占一行';
end;
procedure TForm1.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
//edit1.Text:=Listview1.Selected.Caption;
Listview1.Visible:=false;
//ListView1.Column[1].DisplayName:='ss';
end;
procedure TForm1.Name_sel_SBClick(Sender: TObject);
var
S_Add,E_Add:string;
begin
if ListView2.Visible<>true then
begin
ListView2.Top:=Name_sel_SB.Top;
ListView2.Left:=282;
StartEdit:=LabeledEdit2;
EndEdit:=LabeledEdit4;
FindSpace(S_Add,E_Add,1000);
ListView2.Visible:=true;
end else ListView2.Visible:=false;
end;
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
ListView1.CustomSort(@CustomSortProc,Column.Index);
m_bSort:=not m_bSort;
end;
procedure TForm1.RichCopyClick(Sender: TObject);
begin
Richedit1.CopyToClipboard;
end;
procedure TForm1.RichClearClick(Sender: TObject);
begin
Richedit1.Clear;
end;
procedure TForm1.RichSelALLClick(Sender: TObject);
begin
Richedit1.SelectAll;
end;
procedure TForm1.ListCopyCapClick(Sender: TObject);
begin
if ListView1.Selected<>nil then Clipboard.AsText:=ListView1.Selected.Caption;
end;
procedure TForm1.ListCopyLineClick(Sender: TObject);
begin
with ListView1 do
if Selected<>nil then
Clipboard.AsText:=Selected.Caption+' '+Selected.SubItems.Strings[0]+'-'+Selected.SubItems.Strings[1]+' ['+Selected.SubItems.Strings[2]+'/'+Selected.SubItems.Strings[3]+'] '+Selected.SubItems.Strings[4];
end;
procedure TForm1.ListDelFileClick(Sender: TObject);
begin
if ListView1.Selected<>nil then
if copy(ListView1.Selected.Caption,1,1)<>' ' then
begin
Labelededit3.Text:=ListView1.Selected.Caption;
del_btn.Click;
end;
end;
procedure TForm1.Data_sel_SBClick(Sender: TObject);
var
S_Add,E_Add:string;
begin
if ListView2.Visible<>true then
begin
ListView2.Top:=Data_sel_SB.Top;
ListView2.Left:=282;
StartEdit:=LabeledEdit1;
EndEdit:=LabeledEdit5;
FindSpace(S_Add,E_Add,1000);
ListView2.Visible:=true;
end else ListView2.Visible:=false;
end;
procedure TForm1.ListView2DblClick(Sender: TObject);
begin
if ListView2.Selected<>nil then
begin
StartEdit.Text:= ListView2.Selected.SubItems.Strings[0];
EndEdit.Text:= ListView2.Selected.SubItems.Strings[1];
end;
ListView2.Visible:=false;
end;
procedure TForm1.ListView2KeyPress(Sender: TObject; var Key: Char);
begin
if key=#27 then ListView2.Visible:=false;
end;
procedure TForm1.Button6Click(Sender: TObject);
var
i:integer;
iFileHandle:integer;
begin
if OpenDialog1.FileName='' then exit;
if CheckBox1.Checked=false then
if MessageDlg('选择[不压缩]的文件,是否继续?',mtConfirmation,[mbYes,mbNo],0)<>mryes
then exit;
if CheckBox1.Checked=true then
if MessageDlg('选择[压缩]的文件,是否继续?',mtConfirmation,[mbYes,mbNo],0)<>mryes
then exit;
//if CheckBox1.Checked=false then OpenDialog4.Title:='选择要添加的文件[不压缩]' else OpenDialog4.Title:='选择要添加的文件[压缩]';
if OpenDialog4.Execute then
for i:=0 to OpenDialog4.Files.Count-1 do
begin
OpenDialog2.FileName:=(OpenDialog4.Files.Strings[i]);
iFileHandle:=FileOpen(OpenDialog2.Filename, fmOpenRead);
if iFileHandle>0 then
begin
file_name_edit.Text:=OpenDialog2.FileName;
Fileclose(iFileHandle);
Button3.Click;
end;
end;
OpenDialog2.FileName:='';
//Button5.Click;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -