[builder] Количество клюей в секции ini
От: O-Sam Россия  
Дата: 06.05.05 10:15
Оценка:
Надо узнать количество ключей в секции ini файла.
Поскольку такого метода у TIniFile нет, решил использовать ReadSection, а потом посмотреть Count того, что она вернёт.
Смотрим прототип: virtual void __fastcall ReadSection(const AnsiString Section, Classes::TStrings* Strings) = 0;

Непонятно что ей такого можно пихнуть в качестве Strings. Просто TStrings создать нельзя — это абстрактный класс. Создать TStringList и подсунуть в качестве второго аргумента list->Strings тоже не получается. Как быть?
Re: [builder] Количество клюей в секции ini
От: Oleg A. Bachin Украина  
Дата: 06.05.05 10:21
Оценка:
Здравствуйте, O-Sam, Вы писали:

OS>Надо узнать количество ключей в секции ini файла.

OS>Поскольку такого метода у TIniFile нет, решил использовать ReadSection, а потом посмотреть Count того, что она вернёт.
OS>Смотрим прототип: virtual void __fastcall ReadSection(const AnsiString Section, Classes::TStrings* Strings) = 0;

OS>Непонятно что ей такого можно пихнуть в качестве Strings. Просто TStrings создать нельзя — это абстрактный класс. Создать TStringList и подсунуть в качестве второго аргумента list->Strings тоже не получается. Как быть?


а в качестве второго аргумента list? ты ж его создавал как я понимаю...
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re: [builder] Количество клюей в секции ini
От: Diouzshev Россия  
Дата: 06.05.05 10:30
Оценка:
Hello, O-Sam!
You wrote on Fri, 06 May 2005 10:15:47 GMT:

O> Надо узнать количество ключей в секции ini файла.

O> Поскольку такого метода у TIniFile нет, решил использовать
O> ReadSection, а потом посмотреть Count того, что она вернёт.
O> Смотрим прототип: virtual void __fastcall ReadSection(const
O> AnsiString Section, Classes::TStrings* Strings) = 0;

O> Непонятно что ей такого можно пихнуть в качестве Strings. Просто

O> TStrings создать нельзя — это абстрактный класс. Создать TStringList
O> и подсунуть в качестве второго аргумента list->Strings тоже не
O> получается. Как быть?

а просто list ?
Для Delphi было бы так:

var
sl : TStringList; // (можно TStrings)
begin
...
sl := TStringList.Create;
IniFile.Readsection(SectionName, sl);
end;


With best regards, Alexander Diouzshev-Maltsev.
Posted via RSDN NNTP Server 1.9
Re: [builder] Количество клюей в секции ini
От: crackoff Россия  
Дата: 06.05.05 10:32
Оценка:
Здравствуйте, O-Sam, Вы писали:

OS>Надо узнать количество ключей в секции ini файла.

OS>Поскольку такого метода у TIniFile нет, решил использовать ReadSection, а потом посмотреть Count того, что она вернёт.
OS>Смотрим прототип: virtual void __fastcall ReadSection(const AnsiString Section, Classes::TStrings* Strings) = 0;

OS>Непонятно что ей такого можно пихнуть в качестве Strings. Просто TStrings создать нельзя — это абстрактный класс. Создать TStringList и подсунуть в качестве второго аргумента list->Strings тоже не получается. Как быть?


Количество секций:

  TIniFile *iniFile = TIniFile(iniFileName);
  TStringList *iniKeys = new TStringList;
  TStringList *iniSections = new TStringList;

  iniFile->ReadSections(iniSections);
  ShowMessage(IntToStr(iniSections->Count)); // Количество секций

  iniFile->ReadSection("General", iniKeys);
  ShowMessage(IntToStr(iniKeys->Count)); // Количество ключей
Re[2]: [builder] Количество клюей в секции ini
От: O-Sam Россия  
Дата: 06.05.05 10:45
Оценка:
Всем спасибо, так оно и есть — передал просто list. Я просто ошибочно полагал что TStringList инкапсулирует TStrings, а не является его потомком.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.