creater |
Отправлено: 26.10.2003, 10:02 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
AnsiString info;
IniFile *ini;
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ) );
ini->ReadString( "section", "name", info);
delete ini;
ShowMessage(info); отображается пустота... |
|
Nick |
Отправлено: 26.10.2003, 10:22 |
|
Машинист паровоза
Группа: Участник
Сообщений: 247
|
Считать нужно как я понял в info
info = ini->ReadString( "section", "name", "нет данных" );
3-ий параметр это значение по умолчанию если в ini нет
секции section и параметра name info присваивается "нет данных".
|
|
Георгий |
Отправлено: 26.10.2003, 10:29 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
QUOTE | ini->ReadString( "section", "name", info); |
Последний аргумент предназначени для задания значения "по умолчанию" т.е. на тот случай, когда или в секции, или значении, или в имени поля находится нечно невразумительное.
А значение, считанное из поля возвращается функцией т.е. нужно так:
CODE | info=ini->ReadString( "section", "name", info) |
интересно, а перевод на зимнее время здесь бывает?
Nick — быстрее меня печатаешь!
Отредактировано Георгий — 26/10/2003, 11:32 |
|
creater |
Отправлено: 26.10.2003, 11:41 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (Георгий @ 26/10/2003, 11:31) | А значение, считанное из поля возвращается функцией т.е. нужно так:
CODE | info=ini->ReadString( "section", "name", info) |
|
так у меня было с самого начала... и пусто |
|
Георгий |
Отправлено: 26.10.2003, 11:58 |
|
Почетный железнодорожник
Группа: Модератор
Сообщений: 874
|
сразу не заметил:
QUOTE | ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ) );
|
А зачем переименовывать загружаемый модуль твоей программы?
Может надо получить такоже имя, что у нашего exe`шника, но с расширением ini? Тогда можно так:
CODE | AnsiString info;
AnsiString ext=ExtractFileExt(Application->ExeName);
AnsiString fn=Application->ExeName.SubString(1,Application->ExeName.Length()-ext.Length());
fn+=".ini";
| а потом
CODE |
TIniFile *ini;
ini = new TIniFile( fn );
info=ini->ReadString( "section", "name", info);
delete ini; | |
|
creater |
Отправлено: 26.10.2003, 13:25 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (Георгий @ 26/10/2003, 13:00) | Может надо получить такоже имя, что у нашего exe`шника, но с расширением ini? Тогда можно так:
CODE | AnsiString info;
AnsiString ext=ExtractFileExt(Application->ExeName);
AnsiString fn=Application->ExeName.SubString(1,Application->ExeName.Length()-ext.Length());
fn+=".ini";
| а потом
CODE |
TIniFile *ini;
ini = new TIniFile( fn );
info=ini->ReadString( "section", "name", info);
delete ini; |
|
QUOTE |
сразу не заметил:
ini = new TIniFile( ChangeFileExt( Application->ExeName, ".INI" ) );
А зачем переименовывать загружаемый модуль твоей программы?
|
Да, тут Я глюканул.
Есть файл file.ini, который создается одной программой. И есть другая программа которая работает с file.ini.
Т.е. нужно обратиться к file.ini и из section, считать данные поля name в переменную info |
|
creater |
Отправлено: 26.10.2003, 14:47 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (Георгий @ 26/10/2003, 13:00) | Может надо получить такоже имя, что у нашего exe`шника, но с расширением ini? Тогда можно так:
CODE | AnsiString info;
AnsiString ext=ExtractFileExt(Application->ExeName);
AnsiString fn=Application->ExeName.SubString(1,Application->ExeName.Length()-ext.Length());
fn+=".ini";
| а потом
CODE |
TIniFile *ini;
ini = new TIniFile( fn );
info=ini->ReadString( "section", "name", info);
delete ini; |
|
Так как же из ини файла считать инфу?
Делаю так:
TIniFile *ini;
ini = new TIniFile("file.ini");
info = ini->ReadString( "section", "name", info);
В info пусто. :-( |
|
Admin |
Отправлено: 26.10.2003, 15:15 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
CODE |
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString info = "ABCDEFGH";
TIniFile *ini = new TIniFile("C:\\Program Files\\Borland\\CBuilder6\\Projects\\pr_ini\\file.ini");
ini->WriteString( "section", "name", info);
AnsiString info2 = ini->ReadString( "section", "name", "No Value");
ShowMessage(info2); // получаем ABCDEFGH
delete ini; ini = NULL;
}
|
Попробуйте, вот так у меня все работает.
Может как-то неправильно указываете путь к ini-Файлу,
вот значение и не считывается ?
|
|
creater |
Отправлено: 26.10.2003, 15:56 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 120
|
QUOTE (Admin @ 26/10/2003, 16:17) | CODE |
void __fastcall TForm1::Button1Click(TObject *Sender)
{
AnsiString info = "ABCDEFGH";
TIniFile *ini = new TIniFile("C:\\Program Files\\Borland\\CBuilder6\\Projects\\pr_ini\\file.ini");
ini->WriteString( "section", "name", info);
AnsiString info2 = ini->ReadString( "section", "name", "No Value");
ShowMessage(info2); // получаем ABCDEFGH
delete ini; ini = NULL;
}
|
Попробуйте, вот так у меня все работает.
Может как-то неправильно указываете путь к ini-Файлу,
вот значение и не считывается ? |
Спасибо, заработало. Дело на самом деле в путях.
Только вот еще хотел спросить.
Как указать чтобы file.ini читался из текущей дирректории, а не из каталога Windows ? |
|
Admin |
Отправлено: 26.10.2003, 20:17 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
CODE |
AnsiString sDir = GetCurrentDir();
TIniFile *ini = new TIniFile(sDir+"\\file.ini");
AnsiString info = ini->ReadString( "section", "name", "No Value");
|
Отредактировано Admin — 26/10/2003, 21:20
|
|