home *** CD-ROM | disk | FTP | other *** search
/ Guide To Cracking 2002 / Guide_to_Cracking_2002.iso / Programming / yPP-B-SRC.ZIP / Unit2.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2000-08-30  |  3.4 KB  |  134 lines

  1. unit Unit2;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Buttons, StdCtrls, ExtCtrls,d32lib;
  8.  
  9. type
  10.   Tpatchform = class(TForm)
  11.     Panel1: TPanel;
  12.     Panel2: TPanel;
  13.     Edit1: TEdit;
  14.     Panel3: TPanel;
  15.     Edit2: TEdit;
  16.     SpeedButton1: TSpeedButton;
  17.     SpeedButton2: TSpeedButton;
  18.     Panel4: TPanel;
  19.     Edit3: TEdit;
  20.     GroupBox1: TGroupBox;
  21.     RadioButton1: TRadioButton;
  22.     RadioButton2: TRadioButton;
  23.     RadioButton3: TRadioButton;
  24.     procedure FormClose(Sender: TObject; var Action: TCloseAction);
  25.     procedure SpeedButton2Click(Sender: TObject);
  26.     procedure SpeedButton1Click(Sender: TObject);
  27.     procedure FormShow(Sender: TObject);
  28.   private
  29.     { Private-Deklarationen }
  30.   public
  31.     { Public-Deklarationen }
  32.   end;
  33.  
  34. var
  35.   patchform: Tpatchform;
  36.   
  37. implementation
  38.  
  39. uses Unit1;
  40.  
  41. {$R *.DFM}
  42.  
  43. procedure Tpatchform.FormClose(Sender: TObject; var Action: TCloseAction);
  44. begin
  45. radiobutton1.enabled:=false;
  46. radiobutton2.enabled:=false;
  47. radiobutton3.enabled:=false;
  48. form1.enabled:=true;
  49. edit1.SetFocus;
  50. end;
  51.  
  52. procedure Tpatchform.SpeedButton2Click(Sender: TObject);
  53. begin
  54. if editing then editing:=false;
  55. close;
  56. end;
  57.  
  58. procedure Tpatchform.SpeedButton1Click(Sender: TObject);
  59. begin
  60. // make sure that the entered numbers are fine
  61. if not ishexnum(edit1.text) then
  62.   begin
  63.   mb('The Patch VA is an invalid hex number !',':(',mb_iconerror);
  64.   exit;
  65.   end;
  66. if not ishexnum(edit2.text) then
  67.   begin
  68.   mb('The Patch Bytes are an invalid hex number !',':(',mb_iconerror);
  69.   exit;
  70.   end;
  71. if not ishexnum(edit3.text) then
  72.   begin
  73.   mb('The Original Bytes are an invalid hex number !',':(',mb_iconerror);
  74.   exit;
  75.   end;
  76. checknum:=length(edit2.text)/2; // check whether the patch bytes are even
  77. if frac(checknum) <> 0 then
  78.   begin
  79.   mb('The digits of the Patch Bytes must be an EVEN number !','!!!',mb_iconerror);
  80.   exit;
  81.   end;
  82. checknum:=length(edit3.text)/2; // check whether the original bytes are even
  83. if frac(checknum) <> 0 then
  84.   begin
  85.   mb('The digits of the Original Bytes must be an EVEN number !','!!!',mb_iconerror);
  86.   exit;
  87.   end;
  88. if length(edit2.text) <> length(edit3.text) then // check the length
  89.   begin
  90.   mb('The number of Original Bytes must be equal to the number of Patch Bytes !','!!!',mb_iconerror);
  91.   exit;
  92.   end;
  93. // write the values in the listview
  94. if editing then
  95.   begin
  96.   form1.listview1.items[currsel].subitems[0]:=edit1.text; // don't create a new item
  97.   form1.listview1.items[currsel].subitems[1]:=edit3.text;
  98.   form1.listview1.items[currsel].subitems[2]:=edit2.text;
  99.   editing:=false;
  100.   end
  101.   else
  102.   begin
  103.   // create a new item
  104.   if radiobutton1.checked then
  105.     newitem:=form1.listview1.Items.Insert(currsel);
  106.   if radiobutton2.checked then
  107.     newitem:=form1.listview1.items.insert(currsel+1);
  108.   if radiobutton3.checked then
  109.     newitem:=form1.listview1.items.add;
  110.   newitem.caption:='Patch';
  111.   newitem.subitems.add(edit1.text);
  112.   newitem.subitems.add(edit3.text);
  113.   newitem.subitems.add(edit2.text);
  114.   end;
  115. close;
  116. end;
  117.  
  118. procedure Tpatchform.FormShow(Sender: TObject);
  119. begin
  120. // setup the add postion
  121. if not editing then
  122.   begin
  123.   radiobutton3.checked:=true;
  124.   radiobutton3.enabled:=true;
  125.   if form1.listview1.selcount > 0 then
  126.     begin
  127.     radiobutton1.enabled:=true;
  128.     if currsel < form1.listview1.Items.Count-1 then radiobutton2.enabled:=true;
  129.     end;
  130.   end;
  131. end;
  132.  
  133. end.
  134.