📄 extinifile.pas
字号:
unit extinifile;
interface
uses
windows,inifiles,sysutils;
type
TExtIniFile = class(TIniFile)
public
procedure WritePoint(const Section, Ident: String; Value: TPoint);
function ReadPoint(const Section, Ident: String; Value: TPoint):TPoint;
procedure WriteSingleArray(const Section,Ident:String; var value:array of single;len:Integer);
procedure ReadSingleArray(const Section,Ident:String;var value:array of single;
var defvalue:array of Single;len:Integer);
procedure WriteIntegerArray(const Section,Ident:String; var value:array of Integer;len:Integer);
procedure ReadIntegerArray(const Section,Ident:String;var value:array of Integer;
var defvalue:array of Integer;len:Integer);
procedure WriteRealArray(const Section,Ident:String; var value:array of Real;len:Integer);
procedure ReadRealArray(const Section,Ident:String;var value:array of Real;
var defvalue:array of Real;len:Integer);
end;
implementation
procedure TExtIniFile.WritePoint(const Section, Ident: String; Value: TPoint);
var
str:String;
begin
str:=IntToStr(value.x)+';'+IntToStr(value.Y)+';';
WriteString(section,ident,str);
end;
function TExtIniFile.ReadPoint(const Section, Ident: String; Value: TPoint):TPoint;
var
str,substr:String;
i,h,t,n:Integer;
val:array[1..3] of Integer;
begin
str:=IntToStr(value.x)+';'+IntToStr(value.Y)+';';
str:=ReadString(section,ident,str);
h:=1;
n:=1;
for i:=1 to Length(str) do
begin
if str[i]=';' then
begin
t:=i;
substr:=Copy(str,h,t-h);
val[n]:=StrToInt(substr);
Inc(n);
h:=i+1;
end;
end;
Result.X:=val[1];
Result.Y:=val[2];
end;
procedure TExtIniFile.WriteSingleArray(const Section,Ident:String; var value:array of single;len:Integer);
var
str:String;
i:Integer;
begin
str:='';
for i:=0 to len-1 do
begin
str:=str+FloatToStr(value[i])+';' ;
end;
WriteString(section,ident,str);
end;
procedure TExtIniFile.ReadSingleArray(const Section,Ident:String;var value:array of single;
var defvalue:array of Single;len:Integer);
var
str,substr:String;
i,h,t,n:Integer;
begin
str:='';
for i:=0 to len-1 do
begin
str:=str+FloatToStr(defvalue[i])+';' ;
end;
str:=ReadString(section,ident,str);
h:=1;
n:=0;
for i:=1 to Length(str) do
begin
if str[i]=';' then
begin
t:=i;
substr:=Copy(str,h,t-h);
value[n]:=StrToFloat(substr);
Inc(n);
h:=i+1;
end;
end;
end;
procedure TExtIniFile.WriteIntegerArray(const Section,Ident:String; var value:array of Integer;len:Integer);
var
str:String;
i:Integer;
begin
str:='';
for i:=0 to len-1 do
begin
str:=str+IntToStr(value[i])+',' ;
end;
WriteString(section,ident,str);
end;
procedure TExtIniFile.ReadIntegerArray(const Section,Ident:String;var value:array of Integer;
var defvalue:array of Integer;len:Integer);
var
str,substr:String;
i,h,t,n:Integer;
begin
str:='';
for i:=0 to len-1 do
begin
str:=str+IntToStr(defvalue[i])+',' ;
end;
str:=ReadString(section,ident,str);
h:=1;
n:=0;
for i:=1 to Length(str) do
begin
if str[i]=',' then
begin
t:=i;
substr:=Copy(str,h,t-h);
value[n]:=StrToInt(substr);
Inc(n);
h:=i+1;
end;
end;
end;
procedure TExtIniFile.WriteRealArray(const Section,Ident:String; var value:array of Real;len:Integer);
var
str:String;
i:Integer;
begin
str:='';
for i:=0 to len-1 do
begin
str:=str+FloatToStr(value[i])+',' ;
end;
WriteString(section,ident,str);
end;
procedure TExtIniFile.ReadRealArray(const Section,Ident:String;var value:array of Real;
var defvalue:array of Real;len:Integer);
var
str,substr:String;
i,h,t,n:Integer;
begin
str:='';
for i:=0 to len-1 do
begin
str:=str+FloatToStr(defvalue[i])+',' ;
end;
str:=ReadString(section,ident,str);
h:=1;
n:=0;
for i:=1 to Length(str) do
begin
if str[i]=',' then
begin
t:=i;
substr:=Copy(str,h,t-h);
value[n]:=StrToFloat(substr);
Inc(n);
h:=i+1;
end;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -