list — объяснение синтаксического анализа C ++ TStringsList

Я пытаюсь прочитать INI-файл в списке значений.
Пример ниже работает, но я не знаю почему.

ReadSectionValues содержит список строк ini.
Как Rad Studio анализирует строки с помощью:

ListValues->Names[i] первая часть линии и ListValues->Values[ListValues->Names[i]] вторая часть?

int i;
try

{

//ShowMessage( ListBox1->Items->Strings[ListBox1->ItemIndex] );

TStringList *ListValues = new TStringList;

TIniFile* SettingsFile = new TIniFile(ExtractFilePath(Application->ExeName) + "settings.ini");

String s;

s = ListBox1->Items->Strings[ListBox1->ItemIndex];

SettingsFile->ReadSectionValues( s , ListValues);

for (i = 0; i < (ListValues->Count); i++) {

//ShowMessage(ListValues->Names[i]);

//ShowMessage(ListValues->Values[ListValues->Names[i]]);

vList1->InsertRow(ListValues->Names[i] , ListValues->Values[ListValues->Names[i]],True);

}

delete SettingsFile;

delete ListValues;

}

catch(Exception* e)
{
ShowMessage(e->Message);
}

Пожалуйста, объясните, помощь Rad Stuido не нашла объяснения.

0

Решение

void __fastcall ReadSectionValues(
const System::UnicodeString Section,
System::Classes::TStrings* Strings
)

метод, который получает все строки раздела ini-файла с именем Section и сохраняет их в TStrings-объекте Strings, Обратите внимание, что эти строки имеют формат name=value,

Класс TStrings имеет два свойства доступа имена а также Ценности. Их алгоритм разбора очень прост. Если вы получаете stringsObject->Values[1] занимает вторую строку stringsObject и разбивает его на две строки = (или другое значение NameValueSeparator собственностью stringsObject). Строка слева от = (разделитель) возвращается как имя (по свойству Name) и строка справа от = возвращается как значение (по свойству Value).

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]