Внешний вид сайта:

Чтение и запись INI файлов

Есть группа команд для чтения и записи INI файлов. Функции основаны на параметрах: s это [GROUP], k — левая сторона (ключ), d — оставить по умолчанию или новый параметр и f это имя используемого файла.
function GetIni(s, k: string; d: boolean;
    f: string = ''): boolean; overload;
var
  ini: TMemIniFile;
begin
  Result := d;
  if f = '' then
  begin
    ini := TMemIniFile.Create(
        LowerCase(ChangeFileExt(ParamStr(0), '.ini')));
  end
  else
  begin
    if not FileExists(f) then Exit;
    ini := TMemIniFile.Create(f);
  end;
  if ini.ReadString(s, k, '') = '' then
  begin
    ini.WriteBool(s, k, d);
    ini.UpdateFile;
  end;
  Result := ini.ReadBool(s, k, d);
  FreeAndNil(ini);
end;

function SetIni(s, k: string; d: boolean;
    f: string = ''): boolean; overload;
var
  ini: TMemIniFile;
begin
  Result := d;
  if f = '' then
  begin
    ini := TMemIniFile.Create(
        LowerCase(ChangeFileExt(ParamStr(0), '.ini')));
  end
  else
  begin
    if not FileExists(f) then Exit;
    ini := TMemIniFile.Create(f);
  end;
  ini.WriteBool(s, k, d);
  ini.UpdateFile;
  Result := ini.ReadBool(s, k, d);
  FreeAndNil(ini);
end;

function GetIni(s, k: string; d: integer;
    f: string = ''): integer; overload;
var
  ini: TMemIniFile;
begin
  Result := d;
  if f = '' then
  begin
    ini := TMemIniFile.Create(
        LowerCase(ChangeFileExt(ParamStr(0), '.ini')));
  end
  else
  begin
    if not FileExists(f) then Exit;
    ini := TMemIniFile.Create(f);
  end;
  if ini.ReadString(s, k, '') = '' then
  begin
    ini.WriteInteger(s, k, d);
    ini.UpdateFile;
  end;
  Result := ini.ReadInteger(s, k, d);
  FreeAndNil(ini);
end;

function SetIni(s, k: string; d: integer;
    f: string = ''): integer; overload;
var
  ini: TMemIniFile;
begin
  Result := d;
  if f = '' then
  begin
    ini := TMemIniFile.Create(
        LowerCase(ChangeFileExt(ParamStr(0), '.ini')));
  end
  else
  begin
    if not FileExists(f) then Exit;
    ini := TMemIniFile.Create(f);
  end;
  ini.WriteInteger(s, k, d);
  ini.UpdateFile;
  Result := ini.ReadInteger(s, k, d);
  FreeAndNil(ini);
end;

function GetIni(s, k: string; d: string;
    f: string = ''): string; overload;
var
  ini: TMemIniFile;
begin
  Result := d;
  if f = '' then
  begin
    ini := TMemIniFile.Create(
        LowerCase(ChangeFileExt(ParamStr(0), '.ini')));
  end
  else
  begin
    if not FileExists(f) then Exit;
    ini := TMemIniFile.Create(f);
  end;
  if ini.ReadString(s, k, '') = '' then
  begin
    ini.WriteString(s, k, d);
    ini.UpdateFile;
  end;
  Result := ini.ReadString(s, k, d);
  FreeAndNil(ini);
end;

function SetIni(s, k: string; d: string;
    f: string = ''): string; overload;
var
  ini: TMemIniFile;
begin
  Result := d;
  if f = '' then
  begin
    ini := TMemIniFile.Create(
        LowerCase(ChangeFileExt(ParamStr(0), '.ini')));
  end
  else
  begin
    if not FileExists(f) then Exit;
    ini := TMemIniFile.Create(f);
  end;
  ini.WriteString(s, k, d);
  ini.UpdateFile;
  Result := ini.ReadString(s, k, d);
  FreeAndNil(ini);
end;

Комментарии

Нет комментариев. Ваш будет первым!