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

📄 unit1.pas

📁 厦新 E8手机 ROM 编辑工具源码 编译平台Delphi7
💻 PAS
📖 第 1 页 / 共 5 页
字号:
end;

procedure TForm1.LabeledEdit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if ssCtrl in shift then
  begin
     if key=67 then
        labelededit2.CopyToClipboard;
     if key=86 then
        labelededit2.PasteFromClipboard;
     if key=88 then
        labelededit2.CutToClipboard;
  end;
end;

procedure TForm1.labelededit1Change(Sender: TObject);
begin
data_address:=address_conv(labelededit1.Text,true);
//labelededit1.EditLabel.Caption:=data_address;
LabeledEdit5Change(Sender);
end;

procedure TForm1.LabeledEdit2Change(Sender: TObject);
begin
//name_address:=address_conv(labelededit2.Text,true);
//labelededit2.EditLabel.Caption:=name_address;
end;

procedure TForm1.Button5Click(Sender: TObject);
var
iFileHandle:integer;
i,j:int64;
t1,t2:int64;
begin
  if FileExists(OpenDialog1.FileName) and (get_rom_info()<>-1) then
  begin
  iFileHandle := FileOpen(Opendialog1.Filename, fmOpenRead);
  if iFileHandle >0 then
        begin
        try
          num_org:= num_mod +num_filent;//

          ListView1.Clear;//清除列表
          if (num_filent>0)and(num_filent<=4096) then //增加上限
          begin
            i:=rom_in+84+longword(32*num_mod)+longword(28*num_filent);//Filent文件指针结束
            j:=num_filent;
            ProgressBar1.max:=num_filent+num_mod;
            ProgressBar1.Visible:=true;
            t1:= GetTickCount;///
            ListView1.Visible:=false;
            while j>=1 do
              begin
              application.ProcessMessages;
              get_info(iFileHandle,i);
              i:=i-28;
              ProgressBar1.position:= ProgressBar1.position +1;
              j:=j-1
              end;
            i:=rom_in+84+longword(32*num_mod);//Mod文件指针结束
            j:=num_mod;
            while j>=1 do
              begin
              application.ProcessMessages;
              get_info_mod(iFileHandle,i);
              i:=i-32;
              ProgressBar1.position:= ProgressBar1.position +1;
              j:=j-1
              end;
            //ValueListEditor1.KeyOptions:=[keyedit];//不能重复KEY:,keyunique
            ListView1.Visible:=true;

            ProgressBar1.position:=0;
            ProgressBar1.Visible:=false;
            t2:=GetTickCount;///
            op_log('读取"'+ExtractFileName(Opendialog1.Filename)+'"用时:'+inttostr(t2-t1)+'ms');
          end
           else op_log('无法得到文件信息!');
        finally
          FileClose(iFileHandle);
        end;
        end;
  end;

end;



procedure TForm1.About_btClick(Sender: TObject);
begin
aboutbox.Show;
end;
{
procedure TForm1.Button6Click(Sender: TObject);
var
i:integer;
s:string;
cmd:string;
del_mod:string;
begin
 if fileexists(opendialog1.FileName) then
 begin
  //Button5.Click;
  s:=trim(labelededit3.Text);
  i:=0;
  repeat
  i:=i+1;
  Until (s=ValueListEditor1.Keys[i]) or (i>=(ValueListEditor1.RowCount-1));
  if (s=ValueListEditor1.Keys[i]) then
 begin
  if Win32Platform=VER_PLATFORM_WIN32_NT then cmd:='cmd /k ' else cmd:='command /k ';
  if fileexists(ExtractFilePath(Application.ExeName)+'RomMaster.exe') then
    begin
      begin
      if CheckBox2.Checked=true then del_mod:='-dm ' else del_mod:='-d ';
      winexec(Pchar(cmd+ExtractFilePath(Application.ExeName)+'RomMaster.exe '
        +del_mod + ' "'+s +'" '+'-o'+' "'+OpenDialog1.FileName+'" '
        +' "'+OpenDialog1.FileName+'" '),SW_SHOW);
      end;
    end else showmessage(ExtractFilePath(Application .ExeName)+'RomMaster.exe未找到!');
 end else showmessage('ROM中无此文件');
 end;
 if debug then richedit1.Text:=(cmd+ExtractFilePath(Application.ExeName)+'RomMaster.exe '
        +del_mod + ' "'+s +'" '+'-o'+' "'+OpenDialog1.FileName+'" '
        +' "'+OpenDialog1.FileName+'" ');
end;
}
procedure TForm1.Button7Click(Sender: TObject);
var
s:string;
i:integer;
begin
  if (OpenDialog1.FileName<>'') then
  begin
  s:=LowerCase(edit1.Text);
  i:=-1;
  repeat
  i:=i+1;
  Until (s=LowerCase(ListView1.Items[i].Caption)) or (i>=(ListView1.Items.Count-1));
  if (s=LowerCase(ListView1.Items[i].Caption)) then
    begin
    ListView1.SetFocus;
    //ListView1.ItemIndex:=i;
    ListView1.Items[i].Selected := True;
    ListView1.Selected.MakeVisible(true);//其中PartialOK参数决定是否该item整体可见还是只要可见就可以了.
    end;
  end;
end;

procedure TForm1.N4Click(Sender: TObject);
begin

aboutbox.Show;
end;

procedure TForm1.LabeledEdit4KeyPress(Sender: TObject; var Key: Char);
begin
    if not (key in ['0'..'9','a'..'f','A'..'F',#8,#13]) then
    key:= #0;
    //if (key in [#13]) then labelededit2Change(Sender);
end;

procedure TForm1.LabeledEdit4KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if ssCtrl in shift then
  begin
     if key=67 then
        labelededit4.CopyToClipboard;
     if key=86 then
        labelededit4.PasteFromClipboard;
     if key=88 then
        labelededit4.CutToClipboard;
  end;
end;

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (key in [#13]) then button7.Click;
end;

procedure TForm1.LabeledEdit3KeyPress(Sender: TObject; var Key: Char);
begin
if (key in [#13]) then  del_btn.Click;
end;

procedure TForm1.ROM1Click(Sender: TObject);
begin
Button1.Click;
end;

procedure TForm1.N2Click(Sender: TObject);
begin
Button3.Click;
end;

procedure TForm1.N3Click(Sender: TObject);
begin
Button2.Click;
end;

procedure TForm1.LabeledEdit5KeyPress(Sender: TObject; var Key: Char);
begin
    if not (key in ['0'..'9','a'..'f','A'..'F',#8,#13]) then
    key:= #0;
end;

procedure TForm1.LabeledEdit5KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
 if ssCtrl in shift then
  begin
     if key=67 then
        labelededit5.CopyToClipboard;
     if key=86 then
        labelededit5.PasteFromClipboard;
     if key=88 then
        labelededit5.CutToClipboard;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
str:tstringlist;
s:string;
i:integer;
begin
  rom_base:=Longword($80040000);

 Version.Caption:=get_version;
 Debug:=false;

e8_ini:=ExtractFilePath(Application.ExeName)+'E8.ini';
if not FileExists(e8_ini) then FileClose(FileCreate(e8_ini));
  if not FileExists(e8_ini) then showmessage('无法创建'+e8_ini)
    else
      begin
      str:=tstringlist.Create;
      str.LoadFromFile(e8_ini);
      if str.Count<64 then
       begin
        for i:=0 to str.Count-1 do
          begin
          s:=trim(str.Strings[i]);
          if pos('name:',s)>0 then
            begin
            Labelededit2.text:=copy(s,pos('name:',s)+5,8);//跳过name段
            Labelededit4.text:=copy(s,pos('-',s)+1,8);
            end
          else if pos('data:',s)>0 then
            begin
            Labelededit1.text:=copy(s,pos('data:',s)+5,8);
            Labelededit5.text:=copy(s,pos('-',s)+1,8);
            end;
          //if s<>'//' then ComboBox1.Items.Add(str.Strings[i]);
         end;
        end;
       
      str.Free;
      end;
end;



procedure TForm1.Button8Click(Sender: TObject);
var
str:tstringlist;
i:integer;
info_file:string;
begin
//e8_ini:=ExtractFilePath(Application.ExeName)+'rominfo.txt';
if FileExists(OpenDialog1.FileName) then
 begin
 info_file:=OpenDialog1.FileName+'_info.txt';
 if not FileExists(info_file) then FileClose(FileCreate(info_file));
  if not FileExists(info_file) then showmessage('无法创建'+info_file)
    else
      begin
      //valueListEditor1.Strings.SaveToFile(info_file);
      str:=tstringlist.Create;
      str.Add('文件总数:'+ inttostr(num_mod+num_filent)+' [modent:'+inttostr(num_mod)+' filent:'+inttostr(num_filent)+']');
      str.Add('文件名'+chr(9)+'数据地址区'+chr(9)+'[ROM中/实际大小]'+chr(9)+'类型');
      
      for i:=0 to ListView1.Items.Count-1  do //与RowCount不一样,
        begin
        //str.Add(ansiReplaceText(valueListEditor1.strings[i],'=',chr(9)));
        with  ListView1.Items[i]  do
        str.Add(Caption+chr(9)+SubItems.strings[0]+'-'+SubItems.strings[1]+chr(9)+'['+SubItems.strings[2]+'/'+SubItems.strings[3]+']'+' '+SubItems.strings[4]);
        end;
      str.SaveToFile(info_file);

      str.Free;
      op_log('文件信息成功导出到'+info_file);
      end;
 end;
end;

procedure TForm1.Button9Click(Sender: TObject);
var
str:tstringlist;
begin
if  (trim(Labelededit2.text)<>'')and(trim(Labelededit4.text)<>'')and
    (trim(Labelededit1.text)<>'')and(trim(Labelededit5.text)<>'') then
if not FileExists(e8_ini) then FileClose(FileCreate(e8_ini));
  if not FileExists(e8_ini) then showmessage('无法创建'+e8_ini)
    else
      begin
      str:=tstringlist.Create;
      str.add('name:'+Labelededit2.text+'-'+Labelededit4.text);
      str.add('data:'+Labelededit1.text+'-'+Labelededit5.text);
      str.SaveToFile(e8_ini);

      str.Free;
      op_log('配置保存成功!');
      end;
end;

procedure TForm1.LabeledEdit5Change(Sender: TObject);
var
i:integer;
begin
  if (labelededit1.Text<>'')and(labelededit5.Text<>'')  then
    begin
    i:=strtoint64def('$'+address_conv(labelededit5.text,false),-1)
        -strtoint64def('$'+address_conv(labelededit1.text,false),-1);
    if i>=0 then
     begin  label3.Font.Color:=clblack; label3.Caption:='数据区大小 :'+inttostr(i);
     end
     else begin label3.Font.Color:=clred; label3.Caption:='错误!'; end;
    end;
end;

procedure TForm1.labelededit1DblClick(Sender: TObject);
var
s:string;
begin
 s:= trim(Clipboard.AsText);
 if strtoint64def('$'+s,-1)<>-1 then
labelededit1.PasteFromClipboard;
end;

procedure TForm1.LabeledEdit5DblClick(Sender: TObject);
var
s:string;
begin
 s:= trim(Clipboard.AsText);
 if strtoint64def('$'+s,-1)<>-1 then
labelededit5.PasteFromClipboard;
end;

procedure TForm1.Button10Click(Sender: TObject);
var
iFileHandle:integer;
i:int64;
s1,srom_size,s2:string;
begin
  if FileExists(OpenDialog1.FileName) and (get_rom_info()<>-1) then
  begin
  iFileHandle := FileOpen(opendialog1.filename, fmOpenRead);
  if iFileHandle >0 then
    begin
    try
      if (num_filent>0)and(num_filent<=4096) then //增加上限
        begin
          i:=rom_in+84+longword(32*num_mod)+longword(28*num_filent)-longword((num_mod+num_filent-num_org-1)*28);//Filent文件指针结束
          if num_org=(num_mod+num_filent) then
            Labelededit1.Text:=inttohex(strtoint64def('$'+get_ibyte(iFileHandle,i-4-28,4),0) +strtoint64def('$'+get_ibyte(iFileHandle,i-12-28,4),0),8)
          else
            while  num_org<(num_mod+num_filent) do
              begin
              s1:=get_ibyte(iFileHandle,i-4,4);
              srom_size:=get_ibyte(iFileHandle,i-12,4);
              s2:=inttohex(strtoint64def('$'+s1,0) +strtoint64def('$'+srom_size,0),8);
              with ListView1 do
                begin
                Items.Insert(0);//一定要add
                Items[0].Caption:=getname(iFileHandle,(get_ibyte(iFileHandle,i-8,4)));
                Items[0].SubItems.add(s1);
                Items[0].SubItems.add(s2);
                Items[0].SubItems.add(ihextoint(srom_size));
                Items[0].SubItems.add(ihextoint(get_ibyte(iFileHandle,i-16,4)));
                Items[0].SubItems.add('F'+get_ibyte(iFileHandle,i-28,4));
                end;
              {ValueListEditor1.Row:=1;
              ValueListEditor1.SetFocus;
              ValueListEditor1.InsertRow(getname(iFileHandle,(get_ibyte(iFileHandle,i-8,4))),
                  s1 + ' - ' + s2+' ['+ ihextoint(srom_size) +'/'+ihextoint(get_ibyte(iFileHandle,i-16,4))
                  +'] F'+get_ibyte(iFileHandle,i-28,4),false);
               }
              i:=i+28;
              num_org:=num_org+1;
              labelededit1.Text:=s2;//复制到数据开始
              end;
        end;
    finally

⌨️ 快捷键说明

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