📄 unit_config.pas
字号:
unit Unit_Config;
{$WARNINGS OFF}
{$HINTS OFF}
interface
uses
Windows;
function MyReadOrgStrBySelf():String;{从自己身上读取原始配置字符串}
function MyWriteOrgStrToFile(const FileName,strWrite:string):Boolean;{往文件写入原始字符串}
function MyReadEncryptStrBySelf(const iMark:integer=18):String;{从自己身上读取并解密配置字符串}
function MyWriteEncryptStrToFile(const FileName,strWrite:string;const iMark:integer=18):Boolean;{往文件加密并写入字符串}
implementation
function GetModuleName(Module: HMODULE): string;
var
ModName: array[0..MAX_PATH] of Char;
begin
SetString(Result, ModName, GetModuleFileName(Module, ModName, SizeOf(ModName)));
end;
function FileSeek(Handle, Offset, Origin: Integer): Integer;
begin
Result := SetFilePointer(THandle(Handle), Offset, nil, Origin);
end;
function FileRead(Handle: Integer; var Buffer; Count: LongWord): Integer;
begin
if not ReadFile(THandle(Handle), Buffer, Count, LongWord(Result), nil) then
Result := -1;
end;
function FileWrite(Handle: Integer; const Buffer; Count: LongWord): Integer;
begin
if not WriteFile(THandle(Handle), Buffer, Count, LongWord(Result), nil) then
Result := -1;
end;
function MyReadOrgStrBySelf():String;{从自己身上读取原始配置字符串}
var
hFile:THandle;
iSize:integer;
Str:String;
begin
Result:='';
//建立读文件句柄
hFile := CreateFile(Pchar(GetModuleName(HInstance)),
GENERIC_READ,
FILE_SHARE_READ,
nil,
OPEN_EXISTING,
0,
0);
if hFile = INVALID_HANDLE_VALUE then Exit;
FileSeek(hFile,-Sizeof(iSize),2);
FileRead(hFile,iSize,Sizeof(integer));
FileSeek(hFile,-(Sizeof(integer)+iSize),2);
SetLength(Str,iSize);
FileRead(hFile,Str[1],iSize);
CloseHandle(hFile);
Result:=Str;
end;
function MyWriteOrgStrToFile(const FileName,strWrite:string):Boolean;{往文件写入原始字符串}
var
hFile:THandle;
iSize:integer;
begin
Result:=False;
//建立读文件句柄
hFile := CreateFile(Pchar(FileName),
GENERIC_READ or GENERIC_WRITE,
FILE_SHARE_READ,
nil,
OPEN_EXISTING,//强烈注意:TMD
0,
0);
if hFile = INVALID_HANDLE_VALUE then Exit;
iSize:=Length(strWrite);
FileSeek(hFile,0,2);
FileWrite(hFile,strWrite[1],iSize);
FileWrite(hFile,iSize,Sizeof(iSize));
CloseHandle(hFile);
Result:=True;
end;
function MyReadEncryptStrBySelf(const iMark:integer=18):String;
var
Str:String;
i:integer;
begin
Str:=MyReadOrgStrBySelf;
Result:='';
for i:=1 to Length(Str) do Result:=Result+Chr(Ord(Str[i])+iMark);
end;
function MyWriteEncryptStrToFile(const FileName,strWrite:string;const iMark:integer=18):Boolean;
var
Str:String;
i:integer;
begin
Result:=False;
Str:='';
for i:=1 to Length(strWrite) do Str:=Str+Chr(Ord(strWrite[i])-iMark);
Result:=MyWriteOrgStrToFile(FileName,Str);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -