Качаешь отсюда библиотеку для работы с регулярными выражениями:
http://www.regular-expressions.info/delphi.html
Делаешь подобный модуль:
Код:
unit RegExp;
interface
uses
{Standart}
SysUtils, Windows, Classes,
{Special}
PerlRegEx;
type
TRegExp = class
private
FRegExp: TPerlRegEx;
protected
property RegExp: TPerlRegEx read FRegExp write FRegExp;
public
function Work(Exp, Text: UTF8String): UTF8String;
constructor Create;
destructor Destroy; override;
end;
implementation
{ TRegExp }
constructor TRegExp.Create;
begin
inherited Create;
FRegExp := TPerlRegEx.Create;
end;
destructor TRegExp.Destroy;
begin
FreeAndNil(FRegExp);
inherited Destroy;
end;
function TRegExp.Work(Exp, Text: UTF8String): UTF8String;
begin
Result := '';
RegExp.Subject := Text;
RegExp.RegEx := Exp;
if RegExp.Match then
Result := RegExp.MatchedText;
end;
end.
В программке своей подключаешь модуль описанный выше и обрабатываешь свой INI файлик, запихивая данные, например, в массив записей. Примерно так:
Код:
var
SessionList: TSessionArray; // это массив записей, надеюсь пример приводить не нужно?
...
procedure WhatIMustDo(var SessionList: TSessionArray); // Тут некая процедура заполнения некого объявленного массива
var
i: Integer;
begin
for i := 0 to MyINIFile.Count - 1 do
begin
SessionList.Name := PChar(Utf8ToAnsi(RegExp.Work('^(.*?)(?=;)', AnsiToUTF8(MyINIFile[i])))); // Имя участника
SessionList.Time := PChar(Utf8ToAnsi(RegExp.Work('(?<=;)(.*?)(?=;)', AnsiToUTF8(MyINIFile[i])))); // Время акта
SessionList.Status := PChar(Utf8ToAnsi(RegExp.Work('(?<=;)(.*?)(?=\r\n)', AnsiToUTF8(MyINIFile[i])))); // Пришел-Ушел
end;
...
// Ну а дальше играйся с полученными результатами
IDE под рукой нет, могут быть синтаксические ошибки, но логика должна быть верной. Вроде как. В регулярные выражения могла закрасться ошибка, так что проверяй все.
По графикам
тут что-то такое было, если не то, все равно ознакомься - принцип будет тот же.