C++ 列表解析说明

C++ TStringsList parse explanation

本文关键字:说明 列表 C++      更新时间:2023-10-16

我正在尝试读取值列表框中的 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);
}

请解释一下,拉德·斯图伊多的帮助没有找到任何解释。

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

是一个方法,它获取名称为 Section 的 ini-file 部分的所有行并将它们存储在 Tstrings-object Strings 中。请注意,这些字符串的格式为 name=value

类有两个访问属性"名称"和"值"。他们的解析算法非常简单。如果你得到stringsObject->Values[1]它会从stringsObject中获取第二行,并在=上将其拆分为两个字符串(或stringsObject属性NameValueSeparator的其他值)。=左侧的字符串(分隔符)作为名称返回(按属性 Name ),= 右侧的字符串作为值返回(按属性 Value 返回)。