Чтение значения без использования разделов - PullRequest
4 голосов
/ 20 февраля 2012

Как мне прочитать значение из INI файла без использования разделов?
Так что вместо обычного файла:

[section]
name=value

это приведет к следующему:

name=value

Ответы [ 4 ]

9 голосов
/ 20 февраля 2012

Тогда я бы не назвал это INI-файлом. Во всяком случае, для этого класс TStringList подходит идеально.

Рассмотрим файл animals.txt:

dog=Sally
rat=Fiona
cat=Linus

И рассмотрите этот код:

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TStringList.Create do
    try
      LoadFromFile('C:\Users\Andreas Rejbrand\Desktop\animals.txt');
      ShowMessage(Values['dog']);
    finally
      Free;
    end;
end;
3 голосов
/ 20 февраля 2012

Здесь есть хороший учебник .Например, если iniFile является экземпляром TIniFile, вы можете вызвать метод iniFile.ReadString с пустым спецификатором раздела.

0 голосов
/ 05 июня 2018

Это поздний ответ, но вот код, который я написал для своего проекта:

function GetPropertyValue(aFile, Key: string): string;
var
  properties: TStringList;
begin
  properties := TStringList.Create;
  try
    properties.LoadFromFile(aFile);
    Result := properties.Values[key];
  finally
    properties.free;
  end;
end;

procedure SetPropertyValue(aFile, Key, Value: string);
var
  I: Integer;
  properties: TStringList;
  found: Boolean;
begin
  found := False;
  properties := TStringList.Create;
  try
    properties.LoadFromFile(aFile);
    for I := 0 to properties.Count -1 do
    begin
      if properties.Names[I] = Key then
      begin
        properties[I] := Key + '=' + Value;
        found := True;
        Break
      end;
    end;

    if not found then
    begin
      properties.Add(Key + '=' + Value);
    end;
  finally
    properties.SaveToFile(aFile);
    properties.free;
  end;
end;
0 голосов
/ 20 февраля 2012

Я думаю, что вопрос действительно нуждается в дополнительной информации. Часто люди задают вопросы, касающиеся того, что, по их мнению, им нужно сделать вместо того, чтобы задавать вопросы, связанные счего они на самом деле пытаются достичь.

Почему вам нужно сделать это вместо использования обычных методов чтения записей ini? Если это существующие файлы ini, вам следует использоватьTinifile.ReadSections для чтения имен разделов в список строк и затем итерацию по этому списку с использованием Tinifile.ReadSectionValues для чтения всех пар имя / значение раздела.

Вы читаете существующие INI-файлы или читаетеи писать свои собственные файлы? Если это ваши собственные файлы, то у Андреаса есть хороший ответ выше.

...