Himan |
Отправлено: 30.12.2005, 12:42 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Народ! Помогите разобраться как работает эта фигня. Считывать данные я умею, не раз делал, а вот как создавать эту сладкую парочку нигде не нашёл. Читал хелп, но чо то ничего толкового там не нашёл. Для примера возьмём задачу чтения имён ключей и их значений из регистра винды (Для простоты задачи, все ключи строковые). Заранее спасибо |
|
olegenty |
Отправлено: 30.12.2005, 12:55 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
я п сделал так: map< AnsiString, AnsiString>
и получилось бы так:
CODE |
CStrings: private map< AnsiString, AnsiString >
{
...
...
...
AnsiString& operator[](const AnsiString Index)
{
const_iterator res = find(Index);
if (end() != res)
{
return res->second;
} else
{
// сделать что-то, если параметра нет...
}
}
};
|
|
|
Himan |
Отправлено: 30.12.2005, 13:01 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Оно бы мне подошло если бы не надо было отображать ИМЯ. Я поставил на форму TComboBox который даёт пользователю возможность выбора. А в зависимости от этого выбора прога читает пути. В реестре эти пути прописаны различными ключами. Поэтому и трахаюсь именно с TStrings |
|
Admin |
Отправлено: 30.12.2005, 13:03 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | Represents the value part of a string associated with a given Name, on strings with the form Name=Value.
__property AnsiString Values[AnsiString Name] = {read=GetValue, write=SetValue};
Description
When the list of strings for the TStrings object includes strings of the form Name=Value, use Values to get or set the value part of a string associated with a specific name part. If the list does not contain any strings of the proper Name=Value form, or if none of those strings matches the Name index, Values returns an empty string.
Note: The Name index is case-insensitive. That is, Values is the value part for the first occurrence of Name or an equivalent string that differs only in case.
Strings of the form Name=Value are commonly found in .ini files. For example, here are a few strings taken from a typical .ini file:
DisplayGrid=1
SnapToGrid=1
GridSizeX=8
GridSizeY=8
The Name that identifies the string is to the left of the equal sign (=), and the current Value of the Name identifier is on the right side. There should be no spaces present before or after the equal sign. |
CODE |
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TStringList* SL = new TStringList;
SL->Add("DisplayGrid=1");
SL->Add("SnapToGrid=1");
SL->Add("GridSizeX=8");
SL->Add("GridSizeY=8");
ShowMessage(SL->Values["DisplayGrid"]);
ShowMessage(SL->Values["SnapToGrid"]);
ShowMessage(SL->Values["GridSizeX"]);
ShowMessage(SL->Values["GridSizeY"]);
}
//---------------------------------------------------------------------------
|
______________________________
А с реестром и работайте с помощью соответствующих классов
TIniFile TREgIniFile, а не с помощью TStrings.
Отредактировано Admin — 30/12/2005, 13:05
Присоединить изображение
|
|
Himan |
Отправлено: 30.12.2005, 13:23 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 12
|
Спасибо, разобрался. Я так и подозревал что оно так работает |
|