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

📄 filerecordunit.pas

📁 游戏克星江湖行游戏修改工具全部源码,功能很强的。
💻 PAS
字号:
{

name:(1999.12.1 -jhx1)
			江湖行 II jhx2 
			2002.10.13 renamed to 'GamePaladin II'
CopyRight:XuGanQuan  gqxunet#163.com 
Description:A game cheat tool

This program is free software; you can redistribute it       and/or modify it under the terms of the GNU General Public    License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later     version.                                                                                                                  This program is distributed in the hope that it will be      useful, but WITHOUT ANY WARRANTY; without even the implied    warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR      PURPOSE.  See the GNU General Public License for more        details.                                                                                                                    You should have received a copy of the GNU General Public    License along with this program; if not, write to the Free    Software Foundation, Inc.,                                    675 Mass Ave, Cambridge, MA 02139, USA.      
}
unit FileRecordUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons;
resourcestring
String_needAddFile='加入结果列表';
String_needEditFile='修改结果条目';
String_FileName='文件:';
String_tolongString='修改16个字符以上,请直接用<文件查看与修改> 对话框 ';
String_cannotWriteFile='不能修改该地址.请检查数据类型和存档文件(是否只读?).';
const
  Auto_value=0;
  Byte_value=1;
  word_value=2;
  Dword_value=3;
  int64_value=4;
  Single_value=5;
  Double_Value=6;
  String_Value=7;




type
  TFileRecordForm = class(TForm)
    close_bn: TButton;
    Label3: TLabel;
    Address_Edit: TEdit;
    Label4: TLabel;
    value_edit: TEdit;
    Label5: TLabel;
    File_valuetype_cb: TComboBox;
    EditFile_Sb: TSpeedButton;
    Calc_sb: TSpeedButton;
    Help_sb: TSpeedButton;
    Caption_CB: TComboBox;
    Label6: TLabel;
    AddorMod_Sb: TSpeedButton;
    FileName_Edit: TEdit;
    procedure Help_sbClick(Sender: TObject);
    procedure Calc_sbClick(Sender: TObject);
    procedure close_bnClick(Sender: TObject);
    procedure File_valuetype_cbChange(Sender: TObject);
    procedure EditFile_SbClick(Sender: TObject);
    procedure AddorMod_SbClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
      Procedure FormRefresh;
      Function WriteFileData(theFileName:String;theAddress:Dword;theValue:string;valuetype:integer):string;
  end;

var
  FileRecordForm: TFileRecordForm;

var File_Data_Caption:String;
    File_name:string;
    File_Address:Dword;
    File_value:String;
    File_ValueType:integer;
    File_Info:Integer;
implementation

uses inputhelpUnit, MyCalcUnit, ArchiveEditUnit, FileEditUnit, MainUnit;

{$R *.dfm}

procedure TFileRecordForm.Help_sbClick(Sender: TObject);
begin
if not assigned(InputhelpForm)then  InputhelpForm:=TInputhelpForm.Create(self);
InputhelpForm.Showmodal;
InputhelpForm.Free;
InputhelpForm:=nil;
end;

procedure TFileRecordForm.Calc_sbClick(Sender: TObject);
begin
 MyCalcForm.show;
end;

procedure TFileRecordForm.close_bnClick(Sender: TObject);
begin
close;
end;

procedure TFileRecordForm.FormRefresh;
begin
Caption_CB.Text:=File_Data_Caption;
Address_edit.Text:=intToHex(File_Address,8);
value_edit.Text:=File_value;
case File_ValueType of
Byte_value: File_valuetype_cb.ItemIndex:=0;
Word_value: File_valuetype_cb.ItemIndex:=1;
Dword_value: File_valuetype_cb.ItemIndex:=2;
int64_value: File_valuetype_cb.ItemIndex:=3;
Single_value: File_valuetype_cb.ItemIndex:=4;
Double_value: File_valuetype_cb.ItemIndex:=5;
String_value: File_valuetype_cb.ItemIndex:=6;
end;
FileName_Edit.text:=String_FileName+' '+Uppercase(ExtractFileName(File_name))+' -- '+File_name;
case File_Info of
0:AddorMod_Sb.Caption:=String_needAddFile;
1:AddorMod_Sb.Caption:=String_needAddFile;
2:AddorMod_Sb.Caption:=String_needEditFile;
end;
end;


procedure TFileRecordForm.File_valuetype_cbChange(Sender: TObject);
var tempAddress:Dword;
    Ecode:integer;
begin
case File_valueType_cb.ItemIndex of
0:File_ValueType:=Byte_value;
1:File_ValueType:=Word_value;
2:File_ValueType:=Dword_value;
3:File_ValueType:=Int64_value;
4:File_ValueType:=Single_value;
5:File_ValueType:=Double_value;
6:File_ValueType:=String_value;
end;
Val('$'+Address_Edit.Text,tempAddress,Ecode);
if Ecode>0 then begin beep;Address_Edit.SelectAll;  Exit; end;
value_edit.Text:=ArchiveEditForm.ReadFileData(File_name,tempAddress,File_ValueType);

end;

procedure TFileRecordForm.EditFile_SbClick(Sender: TObject);
var TempAddress:Dword;
    Ecode:integer;
begin
if Filetasknum=0 then Exit;
if FileEditForm.Visible then FileEditForm.Close;
if ArchiveEditForm.checkandGetFileSize(File_name)=0 then exit;
  Val('$'+ Address_Edit.Text,TempAddress,Ecode);
  if Ecode>0 then begin Address_Edit.SelectAll;  exit;end;
  EditFilename:=File_name;
  Nowpos:=TempAddress;
  FileEditForm.Show;


end;

Function TFileRecordForm.WriteFileData(theFileName:String;theAddress:Dword;theValue:string;valuetype:integer):string;
var AddressBuf:Dword;
    i:Integer;
    TempByte:Byte;
    TempWord:Word;
    TempDword:Dword;
    Tempint64:int64;
    TempSingle:Single;
    TempDouble:Double;
    TempStringBYte:byte;
    Ecode:integer;
    tempFileStream:TFileStream;
begin
result:='Error!';

tempFileStream:=TFileStream.Create(theFileName,fmOpenReadWrite or fmshareDenyNone);
try
 tempFileStream.Seek(theAddress,soFromBeginning);
   try

     case ValueType of
         Byte_value: begin
                     val(theValue,tempbyte,Ecode);
                     if Ecode>0 then Exit;
                     tempFileStream.WriteBuffer(TempByte,sizeof(TempByte));
                     result:=theValue;
                     end;
         Word_value: begin
                     val(theValue,TempWord,Ecode);
                     if Ecode>0 then Exit;
                     tempFileStream.WriteBuffer(TempWord,sizeof(TempWord));
                     result:=theValue;
                     end;
         Dword_value:begin
                     val(theValue,TempDWord,Ecode);
                     if Ecode>0 then Exit;
                     tempFileStream.WriteBuffer(TempDWord,sizeof(TempDWord));
                     result:=theValue;
                     end;
         Int64_value:begin
                     val(theValue,TempInt64,Ecode);
                     if Ecode>0 then Exit;
                     tempFileStream.WriteBuffer(TempInt64,sizeof(TempInt64));
                     result:=theValue;
                     end;
         Single_value:begin
                     val(theValue,TempSingle,Ecode);
                     if Ecode>0 then Exit;
                      tempFileStream.WriteBuffer(TempSingle,sizeof(TempSingle));
                      result:=theValue;
                     end;
         Double_value:begin
                     val(theValue,TempDouble,Ecode);
                     if Ecode>0 then Exit;
                      tempFileStream.WriteBuffer(TempDouble,sizeof(TempDouble));
                      result:=theValue;
                     end;
         String_Value:begin
                      for I:=1 to Length(theValue) do
                      begin
                      tempStringBYte:=Ord(theValue[i]);
                      tempFileStream.WriteBuffer(tempStringBYte,sizeof(tempStringBYte));
                      end;
                      result:=theValue;
                     end;
     end;//case end
   except
   end;

   finally
    FreeandNIl(tempFileStream);
   end;

end;



procedure TFileRecordForm.AddorMod_SbClick(Sender: TObject);
Var tempAddress:Dword;
    TempByte:Byte;
    TempWord:Word;
    TempDword:Dword;
    Tempint64:int64;
    TempSingle:Single;
    TempDouble:Double;
    TempString:String;
    Ecode:Integer;
begin

    File_Data_Caption:=Caption_cb.Text;
    File_name:=theFileTask[CurrentFiletaskIndex].FilepathName;
    ///File_Address:Dword;
    //File_value:String;
    //File_ValueType:integer;
    ///File_Info:Integer;
////////////////////////////////////////////////////////////////
if archiveEditForm.checkandGetFileSize(File_name)=0 then exit;
Val('$'+Address_Edit.Text,tempAddress,Ecode);
if Ecode>0 then begin Address_edit.SelectAll;beep; exit;end;
File_Address:=tempAddress;

case File_valueType_cb.ItemIndex of
0:File_ValueType:=Byte_value;
1:File_ValueType:=Word_value;
2:File_ValueType:=Dword_value;
3:File_ValueType:=Int64_value;
4:File_ValueType:=Single_value;
5:File_ValueType:=Double_value;
6:File_ValueType:=String_value;
end;

try
case File_ValueType of
Byte_value:  begin
             val(Value_edit.Text,tempbyte,Ecode);
             if Ecode>0 then begin Value_edit.SelectAll;beep; exit;end;
             end ;
Word_value:  begin
             val(Value_edit.Text,TempWord,Ecode);
             if Ecode>0 then begin Value_edit.SelectAll;beep; exit;end;
             end ;
Dword_value:  begin
             val(Value_edit.Text,tempDword,Ecode);
             if Ecode>0 then begin Value_edit.SelectAll;beep; exit;end;
             end ;
Int64_value:  begin
             val(Value_edit.Text,tempint64,Ecode);
             if Ecode>0 then begin Value_edit.SelectAll;beep; exit;end;
             end ;
Single_value: begin
             val(Value_edit.Text,tempSingle,Ecode);
             if Ecode>0 then begin Value_edit.SelectAll;beep; exit;end;
             end ;
Double_value:  begin
             val(Value_edit.Text,tempDouble,Ecode);
             if Ecode>0 then begin Value_edit.SelectAll;beep; exit;end;
             end ;
String_value:  begin
             if Length(Value_edit.Text)>16 then
              begin
               showmessage(String_tolongString);
               Exit;
              end;
              end;
end;
 File_Value:=Value_Edit.text;
Except
end;
//////////////////////////////////////////////
if File_Value<>WriteFileData(File_name,File_Address,File_Value,File_ValueType) then
begin
showmessage(String_cannotWriteFile);
exit;
end;
FileEditForm.FormLoadFile;


   case File_ValueType of
    Byte_value:TempString:='Byte_Type';
    Word_value:TempString:='Word_Type';
    Dword_value:TempString:='Dword_Type';
    Int64_value:TempString:='Int64_Type';
    Single_value:TempString:='Single_Type';
    Double_value:TempString:='Double_Type';
    String_value:TempString:='String_Type';
   end;
if File_info<>2 then
 with ArchiveEditForm.Edit_LV.Items.add do
 begin
  Caption:=File_Data_Caption;
  Subitems.Add(intToHex(File_Address,8));
  Subitems.Add(File_Value);
  Subitems.Add(TempString);
  Subitems.Add(File_name);
 end  else
 with ArchiveEditForm.Edit_LV.Selected do
 begin
   Caption:=File_Data_Caption;
  Subitems[0]:=(intToHex(File_Address,8));
  Subitems[1]:=(File_Value);
  Subitems[2]:=(TempString);
  Subitems[3]:=(File_name);
 end;


end;

end.

⌨️ 快捷键说明

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