Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
CD-ROM [11]
DLL и PlugIns [75]
Help файлы [20]
INI файлы [16]
RS232 [2]
Активные директории [1]
Директории [0]
Диски [0]
Корзина [5]
Порты [26]
Ресурсы [0]
Файлы [0]
Форматы файлов [15]
Ярлыки [0]

Наш опрос
Есть ли у Вас свой сайт?
Всего ответов: 48

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Файловая система » INI файлы

Некоторые модификации методов ReadSection и ReadSections объекта, типа TIniFile
{ **** UBPFD *********** by delphibase.endimus.com ****
>> Некоторые модификации методов ReadSection и ReadSections объекта, типа TIniFile

Отличие функции ReadSectionEx от метода ReadSection, объекта типа TIniFile,
заключается в том, что размер буффера для сохранения содержимого файла,
не является константой (16Кб, в модуле IniFiles.pas), а представляет собой
переменную величину, значение которой равно размеру файла инициализации
(IniFileName). Таким образом решается проблема, с нехваткой выдыленного
размера оперативной памяти для операции чтения содержимого секции (SectionName).
Так же, в случае успешнонго выполнения чтения секции Ini-файла, функция
возвращает количество строк в заполненном списке (Strings)

Функция ReadSectionsEx имеет те же отличия от метода ReadSection, что и функция
ReadSectionEx от метода ReadSection. Функция ReadSectionsEx помещает в список
Strings все секции указанного INI-файла (IniFileName)

Зависимости: Windows, SysUtils, Classes, IniFiles
Автор: VID, vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright: VID (базируется на коде соответствующих методов, в модуле IniFiles.pas)
Дата: 24 мая 2002 г.
***************************************************** }


unit INIExtension;

interface
uses Windows, SysUtils, Classes, IniFiles;

function ReadSectionsEx(IniFileName: string; Strings: TStrings): Integer;
function ReadSectionEx(IniFileName: string; SectionName: string;
Strings: TStrings): Integer;

implementation

function ReadSectionsEx(IniFileName: string; Strings: TStrings): Integer;
var
BufSize: Integer;
SR: TSearchRec;
buffer, P: Pchar;
begin
Result := -1;
if not FileExists(IniFileName) then
EXIT;
FindFirst(IniFileName, faAnyFile, SR);
BufSize := Sr.Size;
FindClose(SR);
GetMem(Buffer, BufSize);
try
Strings.BeginUpdate;
try
Strings.Clear;
if GetPrivateProfileSectionNames(buffer, BufSize,
Pchar(IniFileName)) <> 0 then
begin
P := Buffer;
while P^ <> #0 do
begin
Strings.Add(P);
Inc(P, StrLen(P) + 1);
end;
end;
Result := Strings.Count;
finally
Strings.EndUpdate;
end;
finally
FreeMem(Buffer, BufSize)
end;
end;

function ReadSectionEx(IniFileName: string; SectionName: string;
Strings: TStrings): Integer;
var
BufSize: Integer;
SR: TSearchRec;
buffer, P: Pchar;
begin
Result := -1;
FindFirst(IniFileName, faAnyFile, SR);
BufSize := Sr.Size;
FindClose(SR);
GetMem(Buffer, BufSize);
try
Strings.BeginUpdate;
try
Strings.Clear;
if GetPrivateProfileString(PChar(SectionName), nil, nil, Buffer, BufSize,
PChar(IniFileName)) <> 0 then
begin
P := Buffer;
while P^ <> #0 do
begin
Strings.Add(P);
Inc(P, StrLen(P) + 1);
end;
end;
Result := Strings.Count;
finally
Strings.EndUpdate;
end;
finally
FreeMem(Buffer, BufSize)
end;
end;

end.

Пример использования:

var
TargetList: TStringList;
Ini: TIniFile;
begin
TargetList := TStringList.create;
Ini := TiniFile.create('system.ini');
//Заполняем список TargetList параметрами секции boot
ReadSectionEx(Ini.FileName, 'Boot', TargetList);
//Заполняем список TargetList именами всех секций
ReadSectionsEx(Ini.FileName, TargetList);
Ini.Free;
TargetList.Free;
end;
Категория: INI файлы | Добавил: Skinner (07.07.2008)
Просмотров: 439 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz