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

📄 formpatchedit.pas

📁 冒险岛吸怪源码UCE的制作材料 用于冒险岛游戏的外挂
💻 PAS
字号:
unit formPatchEdit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TfrmPatchEdit = class(TForm)
    editOffset: TEdit;
    Label1: TLabel;
    editLength: TEdit;
    Label2: TLabel;
    editFilename: TEdit;
    Label3: TLabel;
    Button1: TButton;
    Button2: TButton;
    procedure FormShow(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure editOffsetKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
    edit: boolean;
  end;

var
  frmPatchEdit: TfrmPatchEdit;

implementation

{$R *.dfm}

uses formPatcherMaker, formPatcherMaker3;

procedure TfrmPatchEdit.FormShow(Sender: TObject);
var i,j: integer;
begin
  if not edit then
  begin
    editFilename.Text:='';
    editOffset.Text:='00000000';
    editLength.Text:='0';
    messagedlg('This patch entry won''t be used to check if the file being patched is the right version!',mtInformation,[mbok],0);
  end
  else
  begin
    with frmPatcherMaker do
    begin
      i:=patchcodelist.ItemIndex;
      editfilename.Text:=patches[i].filename;
      editOffset.Text:=IntToHex(patches[i].address,1);
      editLength.Text:=IntToStr(length(patches[i].mem));

      for j:=0 to length(patches[i].mem)-1 do
        if patches[i].mem[j]<>$90 then
        begin
          messagedlg('If you change this entry it wont be used to check if the file being patched is the right version!',mtInformation,[mbok],0);
          break;
        end;
      end;
  end;

end;

procedure TfrmPatchEdit.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  action:=caFree;
end;

procedure TfrmPatchEdit.Button1Click(Sender: TObject);
var i,j: integer;
begin
  with frmPatchermaker do
  begin
    if self.edit then
    begin
      //the record already exists
      i:=patchcodelist.ItemIndex;
    end
    else
    begin
      //there is not yet an entry, so make it
      i:=length(patches);
      setlength(patches,i+1);
    end;

    try
      patches[i].address:=StrToInt('$'+editOffset.Text);
    except
      raise exception.Create('The offset you specified is not valid');
    end;

    try
      j:=StrToInt(editlength.Text);
    except
      raise exception.Create('The length you specified is not valid');
    end;

    setlength(patches[i].mem,j);
    for j:=0 to length(patches[i].mem)-1 do patches[i].mem[j]:=$90;

    patches[i].filename:=editFilename.Text;

    frmpatchermaker3.FillList;
    modalresult:=mrok;
    close;
  end;
end;

procedure TfrmPatchEdit.editOffsetKeyPress(Sender: TObject; var Key: Char);
begin
  case key of
    chr(65)..chr(70) : ;
    chr(97)..chr(102) : ;
    chr(8)        : ;
    chr(16)       : ;
    chr(48)..chr(57) : ;
    else key:=chr(0);
  end;
end;

end.

⌨️ 快捷键说明

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