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

📄 util.pas

📁 一款RPG游戏的引擎可以自己制作一款RPG游戏的引擎可以自己制作
💻 PAS
字号:
unit util;

interface

uses inifiles,Windows, SysUtils, Classes,forms,dialogs;

type TContextName = (OVERVIEW_FORM,GRID_FORM,ISOHINT);

function GetIniFile: TIniFile;
procedure LoadFormPosition(Sender: TForm; IniFile : TInifile);
procedure SaveFormPosition(Sender: TForm; IniFile : TInifile);
function SearchReplace(var target : string; search,replace : string) : boolean;
function GetFileLine(filename : string; LineNum : integer) : string;

procedure SavePrmBool(ContextID : integer;PrmName : TContextName;v : boolean);
function LoadPrmBool(ContextID : integer;PrmName : TContextName;pDefault : boolean) : boolean;
procedure SavePrmInt(ContextID : integer;PrmName : TContextName;v : integer);
function LoadPrmIniBool(ContextID : integer;PrmName : TContextName;pdefault : boolean; Myinifile : Tinifile) : boolean;
function LoadPrmIniInt(ContextID : integer;PrmName : TContextName;pdefault : integer; Myinifile : Tinifile) : integer;
procedure SavePrmIniBool(ContextID : integer;PrmName : TContextName;v : boolean;MyIniFile : TIniFile);
procedure SavePrmIniInt(ContextID : integer;PrmName : TContextName;v : integer;MyIniFile : TIniFile);
function ContextStr(ContextID : TContextName; HintNumber : integer) : string;
function ShowIsoHint(HintID : Integer) : boolean;
function BuildExeDirectory : string;

var ExeDirectory : string;
implementation
uses Hint;

function ShowIsoHint(HintID : Integer) : Boolean;
begin
  Result := true;
  if Form1Hint.HintShown(HintID) then Exit;
  Form1Hint.HintNumber := HintID;
  Result := False;
  if (not Form1Hint.Visible) then
  begin
    Form1Hint.Show;
    Result := True;
  end;
end;

function GetIniFile: TIniFile;
var FileName : string;
begin
    FileName := ExtractFileName(Application.ExeName);
    result := TIniFile.Create(ExtractFilePath(Application.ExeName) + ChangeFileExt(FileName,'.INI'));
end;


procedure LoadFormPosition(Sender: TForm; IniFile : TInifile);
begin
  Sender.Width := IniFile.ReadInteger(Sender.name,'Width',Sender.width);
  Sender.Height := IniFile.ReadInteger(Sender.Name,'Height',Sender.height);
  Sender.Left := IniFile.ReadInteger(Sender.Name,'Left',Sender.left);
  Sender.Top := IniFile.ReadInteger(Sender.Name,'Top',Sender.top);
  if (Sender.Left > Screen.Width) then Sender.Left := Screen.Width - Sender.Width;
  if (Sender.Top > Screen.Height) then Sender.Top := Screen.Height - Sender.Height;
end;

procedure SaveFormPosition(Sender: TForm; IniFile : TInifile);
begin
  IniFile.writeInteger(Sender.name,'Width',Sender.width);
  IniFile.writeInteger(Sender.Name,'Height',Sender.height);
  IniFile.writeInteger(Sender.Name,'Left',Sender.left);
  IniFile.writeInteger(Sender.Name,'Top',Sender.top);
end;
function SearchReplace(var target : string; search,replace : string) : boolean;
var p : integer;
begin
     p := pos(search,target);
     if (p>0) then
     begin
          delete(target,p,length(search));
          insert(replace,target,p);
          result := true;
     end
     else
         result := false;
end;

function GetFileLine(filename : string; LineNum : integer) : string;
var f : textfile;
    s : string;
begin
    s := '';
  	if FileExists(filename) then
    begin
      AssignFile(F, filename);
      Reset(F);
      while LineNum<>0 do
      begin
           Readln(F, S);
           dec(LineNum);
      end;
      CloseFile(F);
    end
    else
       MessageDlg('"' + filename + '" appears to be missing!',mtError,[mbOK],0);
    result := s;
end;

function LoadPrmBool(ContextID : integer;PrmName : TContextName; pdefault : boolean) : boolean;
var MyInifile : TIniFile;
begin
    MyInifile := GetIniFile;
    result := LoadPrmIniBool(ContextID,PrmName,pdefault,MyInifile);
    MyInifile.free;
end;

function LoadPrmInt(ContextID : integer;PrmName : TContextName; pdefault : Integer) : integer;
var MyInifile : TIniFile;
begin
    MyInifile := GetIniFile;
    result := LoadPrmIniInt(ContextID,PrmName,pdefault,MyInifile);
    MyInifile.free;
end;

procedure SavePrmBool(ContextID : integer;PrmName : TContextName; v : boolean);
var MyInifile : TIniFile;
begin
    MyInifile := GetIniFile;
    SavePrmIniBool(ContextID,PrmName,v,MyInifile);
    MyInifile.free;
end;

procedure SavePrmInt(ContextID : integer;PrmName : TContextName; v : integer);
var MyInifile : TIniFile;
begin
    MyInifile := GetIniFile;
    SavePrmIniInt(ContextID,PrmName,v,MyInifile);
    MyInifile.free;
end;

procedure SavePrmIniInt(ContextID : integer;PrmName : TContextName;v : integer;MyIniFile : TIniFile);
begin
    MyIniFile.WriteInteger('Prm',ContextStr(PrmName,ContextID),v);
end;

function LoadPrmIniBool(ContextID : integer;PrmName : TContextName; pdefault : boolean; Myinifile : Tinifile) : boolean;
begin
    result:= MyiniFile.ReadBool('Prm',ContextStr(PrmName,ContextID),pdefault);
end;
function LoadPrmIniInt(ContextID : integer;PrmName : TContextName;pdefault : integer; Myinifile : Tinifile) : integer;
begin
    result:= MyiniFile.ReadInteger('Prm',ContextStr(PrmName,ContextID),pdefault);
end;

procedure SavePrmIniBool(ContextID : integer;PrmName : TContextName;v : boolean;MyIniFile : TIniFile);
begin
    MyiniFile.WriteBool('Prm',ContextStr(PrmName,ContextID),v);
end;

function ContextStr(ContextID : TContextName; HintNumber : integer) : string;
begin
	case ContextID of
		OVERVIEW_FORM : result := 'OverView';
		GRID_FORM : result := 'Grid';
    ISOHINT : Result := 'Hint';
	else
		result := '';
	end;
	if (result <>'') and (HintNumber>=0) then
		result := result + '_'+inttostr(HintNumber);
end;

function BuildExeDirectory : string;
var orgpath : string;
    i : Integer;
begin
  orgpath := Application.ExeName;
  i := Length(orgpath);
  while(orgpath[i]<>'\') and (i>0) do
    Dec(i);
  Delete(orgpath,i,999);
  Result := orgpath;
end;

begin
  ExeDirectory := BuildExeDirectory;
end.

⌨️ 快捷键说明

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