Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!-- http://www.forum-invaders.com.br/vb/showthread.php/40266-Source-Mult-Patcher -->
- Bom fiz este programa somente para matar o tempo.<br>
- <div style="text-align: center;"><img src="http://dl.dropbox.com/u/1227623/Imagens/Outros/Invaders/Patcher.jpg" alt="" border="0"><br>
- <br>
- </div><br>
- <hr><br>
- É um Patcher para múltiplos programas, ele carrega as informações de um XML com o seguinte formato.<br>
- <ul><li style="">Nó <b><App></b> = Nó base de cada aplicação.<br>
- <ul><li style="">Atributo <b>Name</b> = Nome da aplicação.</li><li style="">Atributo <b>MD5</b> = Opcional Hash MD5 do arquivo para evitar que um arquivo incorreto seja escolhido.</li><li style="">Nó <b><Binary></b> (Podem existir múltiplos nós para um mesmo arquivo) = Dados a serem inseridos formatados byte a byte "AA FF 11"...<br>
- <ul><li style="">Atributo <b>Offset</b> = Posição a partir dá qual inserir os dados.</li></ul></li></ul></li></ul><br>
- <br>
- Obs: Os Bytes e o Offset devem ser informados em formato Hexadecimal.<br>
- <br>
- <div class="bbcode_container">
- <div class="bbcode_description">Código PHP:</div>
- <div class="bbcode_code" style="height:132px;"><code><code><span style="color: #000000">
- <span style="color: #0000BB"></span><span style="color: #007700"><</span><span style="color: #0000BB">Applications</span><span style="color: #007700">>
- <br> <</span><span style="color: #0000BB">App Name</span><span style="color: #007700">=</span><span style="color: #DD0000">"AppName" </span><span style="color: #0000BB">MD5</span><span style="color: #007700">=</span><span style="color: #DD0000">"6271587C9C3067E16D857BAA4AC59004"</span><span style="color: #007700">>
- <br> <</span><span style="color: #0000BB">Binary Offset</span><span style="color: #007700">=</span><span style="color: #DD0000">"00000000"</span><span style="color: #007700">></span><span style="color: #0000BB">00 11 22 33 44 55 66 77 88 99</span><span style="color: #007700"></</span><span style="color: #0000BB">Binary</span><span style="color: #007700">>
- <br> <</span><span style="color: #0000BB">Binary Offset</span><span style="color: #007700">=</span><span style="color: #DD0000">"000000FF"</span><span style="color: #007700">></span><span style="color: #0000BB">AA BB CC DD EE FF</span><span style="color: #007700"></</span><span style="color: #0000BB">Binary</span><span style="color: #007700">>
- <br> </</span><span style="color: #0000BB">App</span><span style="color: #007700">>
- <br> <</span><span style="color: #0000BB">App Name</span><span style="color: #007700">=</span><span style="color: #DD0000">"Teste"</span><span style="color: #007700">>
- <br> <</span><span style="color: #0000BB">Binary Offset</span><span style="color: #007700">=</span><span style="color: #DD0000">"00000000"</span><span style="color: #007700">></span><span style="color: #0000BB">01 02 03 04 04 05 06 07 08 09</span><span style="color: #007700"></</span><span style="color: #0000BB">Binary</span><span style="color: #007700">>
- <br> </</span><span style="color: #0000BB">App</span><span style="color: #007700">>
- <br></</span><span style="color: #0000BB">Applications</span><span style="color: #007700">>
- <br></span><span style="color: #0000BB"></span>
- </span>
- </code></code></div>
- </div><hr><br>
- <div style="text-align: center;"><a href="http://dl.dropbox.com/u/1227623/Downloads/Invaders/Patcher.7z" target="_blank" rel="nofollow"><img src="http://dl.dropbox.com/u/1227623/Imagens/download-icone.jpg" alt="" border="0"></a><br>
- <a href="http://dl.dropbox.com/u/1227623/Downloads/Invaders/Patcher.7z" target="_blank" rel="nofollow"><b>Download</b></a></div><br>
- <hr><br>
- Somente para constar utilizei o <b>Delphi XE2</b><br>
- <br>
- <div class="bbcode_container">
- <div class="bbcode_description">Código PHP:</div>
- <div class="bbcode_code" style="height:372px;"><code><code><span style="color: #000000">
- <span style="color: #0000BB">unit UnitPatcher</span><span style="color: #007700">;
- <br>
- <br>interface
- <br>
- <br></span><span style="color: #0000BB">uses
- <br> Winapi</span><span style="color: #007700">.</span><span style="color: #0000BB">Windows</span><span style="color: #007700">, </span><span style="color: #0000BB">Winapi</span><span style="color: #007700">.</span><span style="color: #0000BB">Messages</span><span style="color: #007700">, </span><span style="color: #0000BB">System</span><span style="color: #007700">.</span><span style="color: #0000BB">SysUtils</span><span style="color: #007700">, </span><span style="color: #0000BB">System</span><span style="color: #007700">.</span><span style="color: #0000BB">Variants</span><span style="color: #007700">, </span><span style="color: #0000BB">System</span><span style="color: #007700">.</span><span style="color: #0000BB">Classes</span><span style="color: #007700">, </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">Graphics</span><span style="color: #007700">,
- <br> </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">Controls</span><span style="color: #007700">, </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">Forms</span><span style="color: #007700">, </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">Dialogs</span><span style="color: #007700">, </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">StdCtrls</span><span style="color: #007700">, </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">ExtCtrls</span><span style="color: #007700">, </span><span style="color: #0000BB">Generics</span><span style="color: #007700">.</span><span style="color: #0000BB">Collections</span><span style="color: #007700">,
- <br> </span><span style="color: #0000BB">Vcl</span><span style="color: #007700">.</span><span style="color: #0000BB">Imaging</span><span style="color: #007700">.</span><span style="color: #0000BB">jpeg</span><span style="color: #007700">;
- <br>
- <br></span><span style="color: #0000BB">type
- <br> TFrmPatcher </span><span style="color: #007700">= class(</span><span style="color: #0000BB">TForm</span><span style="color: #007700">)
- <br> </span><span style="color: #0000BB">Image1</span><span style="color: #007700">: </span><span style="color: #0000BB">TImage</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">CmbApps</span><span style="color: #007700">: </span><span style="color: #0000BB">TComboBox</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Label1</span><span style="color: #007700">: </span><span style="color: #0000BB">TLabel</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">BtnPatch</span><span style="color: #007700">: </span><span style="color: #0000BB">TButton</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">procedure FormCreate</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">: </span><span style="color: #0000BB">TObject</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">procedure BtnPatchClick</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">: </span><span style="color: #0000BB">TObject</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">procedure FormDestroy</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">: </span><span style="color: #0000BB">TObject</span><span style="color: #007700">);
- <br> private
- <br> { Private </span><span style="color: #0000BB">declarations </span><span style="color: #007700">}
- <br> public
- <br> { Public </span><span style="color: #0000BB">declarations </span><span style="color: #007700">}
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">OffsetData </span><span style="color: #007700">= </span><span style="color: #0000BB">record
- <br> Offset</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Data</span><span style="color: #007700">: </span><span style="color: #0000BB">TList</span><span style="color: #007700"><</span><span style="color: #0000BB">Byte</span><span style="color: #007700">>;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">AppInfo </span><span style="color: #007700">= </span><span style="color: #0000BB">record
- <br> Name</span><span style="color: #007700">: </span><span style="color: #0000BB">string</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">MD5</span><span style="color: #007700">: </span><span style="color: #0000BB">string</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Offsets</span><span style="color: #007700">: </span><span style="color: #0000BB">TList</span><span style="color: #007700"><</span><span style="color: #0000BB">OffsetData</span><span style="color: #007700">>;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br>var
- <br> </span><span style="color: #0000BB">FrmPatcher</span><span style="color: #007700">: </span><span style="color: #0000BB">TFrmPatcher</span><span style="color: #007700">;
- <br>
- <br></span><span style="color: #0000BB">implementation
- <br>
- <br>uses
- <br> System</span><span style="color: #007700">.</span><span style="color: #0000BB">StrUtils</span><span style="color: #007700">, </span><span style="color: #0000BB">System</span><span style="color: #007700">.</span><span style="color: #0000BB">Types</span><span style="color: #007700">, </span><span style="color: #0000BB">IdHashMessageDigest</span><span style="color: #007700">, </span><span style="color: #0000BB">Xml</span><span style="color: #007700">.</span><span style="color: #0000BB">XMLDoc</span><span style="color: #007700">, </span><span style="color: #0000BB">Xml</span><span style="color: #007700">.</span><span style="color: #0000BB">XMLIntf</span><span style="color: #007700">;
- <br>
- <br>var
- <br> </span><span style="color: #0000BB">Apps</span><span style="color: #007700">: </span><span style="color: #0000BB">TList</span><span style="color: #007700"><</span><span style="color: #0000BB">AppInfo</span><span style="color: #007700">>;
- <br>
- <br>{</span><span style="color: #0000BB">$R </span><span style="color: #007700">*.</span><span style="color: #0000BB">dfm</span><span style="color: #007700">}
- <br>
- <br></span><span style="color: #0000BB">procedure TFrmPatcher</span><span style="color: #007700">.</span><span style="color: #0000BB">BtnPatchClick</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">: </span><span style="color: #0000BB">TObject</span><span style="color: #007700">);
- <br>var
- <br> </span><span style="color: #0000BB">Dialog</span><span style="color: #007700">: </span><span style="color: #0000BB">TOpenDialog</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">AppStream</span><span style="color: #007700">: </span><span style="color: #0000BB">TFileStream</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Offset</span><span style="color: #007700">: </span><span style="color: #0000BB">OffsetData</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">MD5Hash</span><span style="color: #007700">: </span><span style="color: #0000BB">TIdHashMessageDigest5</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">B</span><span style="color: #007700">: </span><span style="color: #0000BB">Byte</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">I</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">N</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br></span><span style="color: #0000BB">begin
- <br> Dialog</span><span style="color: #007700">:= </span><span style="color: #0000BB">TOpenDialog</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #0000BB">Self</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">MD5Hash</span><span style="color: #007700">:= </span><span style="color: #0000BB">TIdHashMessageDigest5</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;
- <br> try
- <br> </span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">Options</span><span style="color: #007700">:= [</span><span style="color: #0000BB">ofOverwritePrompt</span><span style="color: #007700">, </span><span style="color: #0000BB">ofHideReadOnly</span><span style="color: #007700">, </span><span style="color: #0000BB">ofFileMustExist</span><span style="color: #007700">, </span><span style="color: #0000BB">ofExtensionDifferent</span><span style="color: #007700">];
- <br> </span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">Filter</span><span style="color: #007700">:= </span><span style="color: #DD0000">'Executable|*.exe|Any|*.*'</span><span style="color: #007700">;
- <br> if(</span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">Execute</span><span style="color: #007700">(</span><span style="color: #0000BB">Self</span><span style="color: #007700">.</span><span style="color: #0000BB">Handle</span><span style="color: #007700">))</span><span style="color: #0000BB">then
- <br> begin
- <br> CopyFile</span><span style="color: #007700">(</span><span style="color: #0000BB">PWideChar</span><span style="color: #007700">(</span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">FileName</span><span style="color: #007700">), </span><span style="color: #0000BB">PWideChar</span><span style="color: #007700">(</span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">FileName </span><span style="color: #007700">+ </span><span style="color: #DD0000">'.bkp'</span><span style="color: #007700">), </span><span style="color: #0000BB">false</span><span style="color: #007700">);
- <br>
- <br> </span><span style="color: #0000BB">AppStream</span><span style="color: #007700">:= </span><span style="color: #0000BB">TFileStream</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">FileName</span><span style="color: #007700">, </span><span style="color: #0000BB">fmOpenReadWrite</span><span style="color: #007700">);
- <br>
- <br> if((</span><span style="color: #0000BB">MD5Hash</span><span style="color: #007700">.</span><span style="color: #0000BB">HashStreamAsHex</span><span style="color: #007700">(</span><span style="color: #0000BB">AppStream</span><span style="color: #007700">) = </span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">CmbApps</span><span style="color: #007700">.</span><span style="color: #0000BB">ItemIndex</span><span style="color: #007700">].</span><span style="color: #0000BB">MD5</span><span style="color: #007700">) or (</span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">CmbApps</span><span style="color: #007700">.</span><span style="color: #0000BB">ItemIndex</span><span style="color: #007700">].</span><span style="color: #0000BB">MD5 </span><span style="color: #007700">= </span><span style="color: #DD0000">''</span><span style="color: #007700">))</span><span style="color: #0000BB">then
- <br> begin
- <br> </span><span style="color: #007700">for </span><span style="color: #0000BB">I </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">CmbApps</span><span style="color: #007700">.</span><span style="color: #0000BB">ItemIndex</span><span style="color: #007700">].</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> Offset</span><span style="color: #007700">:= </span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">CmbApps</span><span style="color: #007700">.</span><span style="color: #0000BB">ItemIndex</span><span style="color: #007700">].</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">];
- <br> </span><span style="color: #0000BB">AppStream</span><span style="color: #007700">.</span><span style="color: #0000BB">Seek</span><span style="color: #007700">(</span><span style="color: #0000BB">Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Offset</span><span style="color: #007700">, </span><span style="color: #0000BB">soFromBeginning</span><span style="color: #007700">);
- <br>
- <br> for </span><span style="color: #0000BB">N </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Data</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> B</span><span style="color: #007700">:= </span><span style="color: #0000BB">Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Data</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">N</span><span style="color: #007700">];
- <br> </span><span style="color: #0000BB">AppStream</span><span style="color: #007700">.</span><span style="color: #0000BB">Write</span><span style="color: #007700">(</span><span style="color: #0000BB">B</span><span style="color: #007700">, </span><span style="color: #0000BB">1</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">Application</span><span style="color: #007700">.</span><span style="color: #0000BB">MessageBox</span><span style="color: #007700">(</span><span style="color: #DD0000">'Patch Successfully!'</span><span style="color: #007700">, </span><span style="color: #DD0000">'Patched'</span><span style="color: #007700">, </span><span style="color: #0000BB">MB_OK </span><span style="color: #007700">+ </span><span style="color: #0000BB">MB_ICONINFORMATION</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">end
- <br> </span><span style="color: #007700">else
- <br> </span><span style="color: #0000BB">begin
- <br> Raise</span><span style="color: #007700">(</span><span style="color: #0000BB">Exception</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #DD0000">'Invalid MD5 hash'</span><span style="color: #007700">));
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">except on E</span><span style="color: #007700">: </span><span style="color: #0000BB">Exception </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">Application</span><span style="color: #007700">.</span><span style="color: #0000BB">MessageBox</span><span style="color: #007700">(</span><span style="color: #0000BB">PWideChar</span><span style="color: #007700">(</span><span style="color: #0000BB">E</span><span style="color: #007700">.</span><span style="color: #0000BB">Message</span><span style="color: #007700">), </span><span style="color: #DD0000">'Patch Failed'</span><span style="color: #007700">, </span><span style="color: #0000BB">MB_OK </span><span style="color: #007700">+ </span><span style="color: #0000BB">MB_ICONERROR</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">Dialog</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">MD5Hash</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">AppStream</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br></span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br></span><span style="color: #0000BB">procedure TFrmPatcher</span><span style="color: #007700">.</span><span style="color: #0000BB">FormCreate</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">: </span><span style="color: #0000BB">TObject</span><span style="color: #007700">);
- <br>var
- <br> </span><span style="color: #0000BB">Doc</span><span style="color: #007700">: </span><span style="color: #0000BB">TXMLDocument</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">NodeApp</span><span style="color: #007700">: </span><span style="color: #0000BB">IXMLNode</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">App</span><span style="color: #007700">: </span><span style="color: #0000BB">AppInfo</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Offset</span><span style="color: #007700">: </span><span style="color: #0000BB">OffsetData</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Bytes</span><span style="color: #007700">: </span><span style="color: #0000BB">TStringDynArray</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">I</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">N</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">B</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br></span><span style="color: #0000BB">begin
- <br> Apps</span><span style="color: #007700">:= </span><span style="color: #0000BB">TList</span><span style="color: #007700"><</span><span style="color: #0000BB">AppInfo</span><span style="color: #007700">>.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Doc</span><span style="color: #007700">:= </span><span style="color: #0000BB">TXMLDocument</span><span style="color: #007700">.</span><span style="color: #0000BB">Create</span><span style="color: #007700">(</span><span style="color: #0000BB">Self</span><span style="color: #007700">);
- <br>
- <br> try
- <br> </span><span style="color: #0000BB">Doc</span><span style="color: #007700">.</span><span style="color: #0000BB">LoadFromFile</span><span style="color: #007700">(</span><span style="color: #DD0000">'.\Applications.xml'</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">except on E</span><span style="color: #007700">: </span><span style="color: #0000BB">Exception </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> Doc</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Application</span><span style="color: #007700">.</span><span style="color: #0000BB">MessageBox</span><span style="color: #007700">(</span><span style="color: #0000BB">PWideChar</span><span style="color: #007700">(</span><span style="color: #0000BB">E</span><span style="color: #007700">.</span><span style="color: #0000BB">Message</span><span style="color: #007700">), </span><span style="color: #DD0000">'Fatal Error'</span><span style="color: #007700">, </span><span style="color: #0000BB">MB_OK </span><span style="color: #007700">+ </span><span style="color: #0000BB">MB_ICONERROR</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">Application</span><span style="color: #007700">.</span><span style="color: #0000BB">Terminate</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end
- <br> end</span><span style="color: #007700">;
- <br>
- <br> try
- <br> for </span><span style="color: #0000BB">I </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Doc</span><span style="color: #007700">.</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">[</span><span style="color: #DD0000">'Applications'</span><span style="color: #007700">].</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> App</span><span style="color: #007700">.</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">:= </span><span style="color: #0000BB">TList</span><span style="color: #007700"><</span><span style="color: #0000BB">OffsetData</span><span style="color: #007700">>.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">NodeApp</span><span style="color: #007700">:= </span><span style="color: #0000BB">Doc</span><span style="color: #007700">.</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">[</span><span style="color: #DD0000">'Applications'</span><span style="color: #007700">].</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">];
- <br> </span><span style="color: #0000BB">App</span><span style="color: #007700">.</span><span style="color: #0000BB">Name</span><span style="color: #007700">:= </span><span style="color: #0000BB">NodeApp</span><span style="color: #007700">.</span><span style="color: #0000BB">Attributes</span><span style="color: #007700">[</span><span style="color: #DD0000">'Name'</span><span style="color: #007700">];
- <br>
- <br> try
- <br> </span><span style="color: #0000BB">App</span><span style="color: #007700">.</span><span style="color: #0000BB">MD5</span><span style="color: #007700">:= </span><span style="color: #0000BB">NodeApp</span><span style="color: #007700">.</span><span style="color: #0000BB">Attributes</span><span style="color: #007700">[</span><span style="color: #DD0000">'MD5'</span><span style="color: #007700">];
- <br> </span><span style="color: #0000BB">except
- <br> App</span><span style="color: #007700">.</span><span style="color: #0000BB">MD5</span><span style="color: #007700">:= </span><span style="color: #DD0000">''</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> for </span><span style="color: #0000BB">N </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to NodeApp</span><span style="color: #007700">.</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Data</span><span style="color: #007700">:= </span><span style="color: #0000BB">TList</span><span style="color: #007700"><</span><span style="color: #0000BB">Byte</span><span style="color: #007700">>.</span><span style="color: #0000BB">Create</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Offset</span><span style="color: #007700">:= </span><span style="color: #0000BB">StrToInt</span><span style="color: #007700">(</span><span style="color: #DD0000">'$' </span><span style="color: #007700">+ </span><span style="color: #0000BB">NodeApp</span><span style="color: #007700">.</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">[</span><span style="color: #0000BB">N</span><span style="color: #007700">].</span><span style="color: #0000BB">Attributes</span><span style="color: #007700">[</span><span style="color: #DD0000">'Offset'</span><span style="color: #007700">]);
- <br> </span><span style="color: #0000BB">Bytes</span><span style="color: #007700">:= </span><span style="color: #0000BB">SplitString</span><span style="color: #007700">(</span><span style="color: #0000BB">NodeApp</span><span style="color: #007700">.</span><span style="color: #0000BB">ChildNodes</span><span style="color: #007700">[</span><span style="color: #0000BB">N</span><span style="color: #007700">].</span><span style="color: #0000BB">Text</span><span style="color: #007700">, </span><span style="color: #DD0000">' '</span><span style="color: #007700">);
- <br>
- <br> for </span><span style="color: #0000BB">B </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Length</span><span style="color: #007700">(</span><span style="color: #0000BB">Bytes</span><span style="color: #007700">) -</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Data</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">StrToInt</span><span style="color: #007700">(</span><span style="color: #DD0000">'$' </span><span style="color: #007700">+ </span><span style="color: #0000BB">Bytes</span><span style="color: #007700">[</span><span style="color: #0000BB">B</span><span style="color: #007700">]));
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">App</span><span style="color: #007700">.</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">Offset</span><span style="color: #007700">);
- <br>
- <br> </span><span style="color: #0000BB">SetLength</span><span style="color: #007700">(</span><span style="color: #0000BB">Bytes</span><span style="color: #007700">, </span><span style="color: #0000BB">0</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Offset</span><span style="color: #007700">:= </span><span style="color: #0000BB">0</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">App</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">App</span><span style="color: #007700">.</span><span style="color: #0000BB">Name</span><span style="color: #007700">:= </span><span style="color: #DD0000">''</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">App</span><span style="color: #007700">.</span><span style="color: #0000BB">MD5</span><span style="color: #007700">:= </span><span style="color: #DD0000">''</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">except on E</span><span style="color: #007700">: </span><span style="color: #0000BB">Exception </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> App</span><span style="color: #007700">.</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Offset</span><span style="color: #007700">.</span><span style="color: #0000BB">Data</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Doc</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">Application</span><span style="color: #007700">.</span><span style="color: #0000BB">MessageBox</span><span style="color: #007700">(</span><span style="color: #0000BB">PWideChar</span><span style="color: #007700">(</span><span style="color: #0000BB">E</span><span style="color: #007700">.</span><span style="color: #0000BB">Message</span><span style="color: #007700">), </span><span style="color: #DD0000">'Fatal Error'</span><span style="color: #007700">, </span><span style="color: #0000BB">MB_OK </span><span style="color: #007700">+ </span><span style="color: #0000BB">MB_ICONERROR</span><span style="color: #007700">);
- <br>
- <br> </span><span style="color: #0000BB">Application</span><span style="color: #007700">.</span><span style="color: #0000BB">Terminate</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end
- <br> end</span><span style="color: #007700">;
- <br>
- <br> for </span><span style="color: #0000BB">I </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> CmbApps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">.</span><span style="color: #0000BB">Add</span><span style="color: #007700">(</span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">].</span><span style="color: #0000BB">Name</span><span style="color: #007700">);
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">CmbApps</span><span style="color: #007700">.</span><span style="color: #0000BB">ItemIndex</span><span style="color: #007700">:= </span><span style="color: #0000BB">0</span><span style="color: #007700">;
- <br>
- <br> </span><span style="color: #0000BB">Doc</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br></span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br></span><span style="color: #0000BB">procedure TFrmPatcher</span><span style="color: #007700">.</span><span style="color: #0000BB">FormDestroy</span><span style="color: #007700">(</span><span style="color: #0000BB">Sender</span><span style="color: #007700">: </span><span style="color: #0000BB">TObject</span><span style="color: #007700">);
- <br>var
- <br> </span><span style="color: #0000BB">I</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">N</span><span style="color: #007700">: </span><span style="color: #0000BB">Integer</span><span style="color: #007700">;
- <br></span><span style="color: #0000BB">begin
- <br> </span><span style="color: #007700">for </span><span style="color: #0000BB">I </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> </span><span style="color: #007700">for </span><span style="color: #0000BB">N </span><span style="color: #007700">:= </span><span style="color: #0000BB">0 to Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">].</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">.</span><span style="color: #0000BB">Count </span><span style="color: #007700">-</span><span style="color: #0000BB">1 </span><span style="color: #007700">do
- <br> </span><span style="color: #0000BB">begin
- <br> Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">].</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">N</span><span style="color: #007700">].</span><span style="color: #0000BB">Data</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Items</span><span style="color: #007700">[</span><span style="color: #0000BB">I</span><span style="color: #007700">].</span><span style="color: #0000BB">Offsets</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br> </span><span style="color: #0000BB">Apps</span><span style="color: #007700">.</span><span style="color: #0000BB">Free</span><span style="color: #007700">;
- <br></span><span style="color: #0000BB">end</span><span style="color: #007700">;
- <br>
- <br></span><span style="color: #0000BB">end</span><span style="color: #007700">.
- <br></span><span style="color: #0000BB"></span>
- </span>
- </code></code></div>
- </div>Espero que seja útil á alguém <img src="images/smilies/smile.gif" alt="" title="Sorrindo" class="inlineimg" border="0">.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement