Надо узнать количество ключей в секции ini файла.
Поскольку такого метода у TIniFile нет, решил использовать ReadSection, а потом посмотреть Count того, что она вернёт.
Смотрим прототип: virtual void __fastcall ReadSection(const AnsiString Section, Classes::TStrings* Strings) = 0;
Непонятно что ей такого можно пихнуть в качестве Strings. Просто TStrings создать нельзя — это абстрактный класс. Создать TStringList и подсунуть в качестве второго аргумента list->Strings тоже не получается. Как быть?
Здравствуйте, 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>>
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
Здравствуйте, 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)); // Количество ключей
Всем спасибо, так оно и есть — передал просто list. Я просто ошибочно полагал что TStringList инкапсулирует TStrings, а не является его потомком.