Здравсвуйте тов. эксперты... эт. опять я.. К вопросу 1039.. вобщем вот эксперт Извращенок сказал что тама етсь "особые символы" для форматирования и послал меня в... msdn. может я тупой такой, а может мсдн у меня не полный но вобщем не нашел я там этих особых сиволов... так вот. не могли бы вы их мне сообщить сюда либо на мылить... заранее спасиббо экс-эксперт Painbringer
Доброе время суток, Painbringer! В MSDN этих символов не было - там было, как их туда посылать. Самих их ищи в системной проге "Character Map" Ответ отправлен: 01.09.2003, 04:57 Отправитель: Извращенок
Вопрос № 1041
Здравствуйте, уважаемые экспетры. Помоготе, пожалуйста, разобраться. C++ Builder 1. Есть ListView1. В него при создании формы грузится ini-файл таким куском: path = ExtractFilePath(ParamStr(0)); //извлечение пути к программе inifile=path+"\config.ini"; ListView1->Items->Clear(); //почистили список почтовых ящиков и путей к ним if(FileExists(inifile)) { //Создание объекта Ini IniNastr = new TIniFile(inifile.c_str()); //чтение значения переменных IniNastr->ReadSection("Path",ListBox1->Items); //прочитали названия почтовых ящиков в
for (int i = 0; i < ListBox1->Items->Count; i++) { ListView1->Items->Add(); //добавляем элемент TListItem в список почтовых ящиков и путей к ним TListItem *Item = ListView1->Items->Item[i];
//указатель на первый элемент TListItem с номером i Item->Caption = ListBox1->Items->Strings[i]; //присваиваем имя почтового ящика Item->SubItems->Add(IniNastr->ReadString("Path",ListBox1->Items->Strings[i],"")); //и путь элементу с номером i } } else ShowMessage("Нарушены сохранённые настройки программы.
Необходимо заново настроить программу."); delete ListBox1; delete IniNastr; Но при этом строка ListView1->Items->Clear(); не работает. Т.е. если я руками заведу туда что-нибудь, то это что-нибудь не убирается. 2. После того, как пользователь поработал с этим ListView1, мне нужно сохранить эти изменения в ini-файле. Я сохраняю это таким куском: FILE *F; //проверка существования файла .INI if (!FileExists(inifile)) { if((F = fopen(inifile.c_str(), "w+")) == NULL) { ShowMessage("Файл *.ini не удается создать"); return; } fclose(F); //закрыие файла *.ini } //создание объекта Ini IniNastr = new TIniFile(inifile); for (int i = 0; i < ListView1->Items->Count; i++) { TListItem *Item = ListView1->Items->Item[i]; IniNastr->WriteString("Path",Item->Caption,Item->SubItems->Strings[i]);
} delete IniNastr; Close(); Но при этом в ходе выполнения этого куска выдается сообщение об ошибке: List index out of bounds(1). Подскажите, пожалуйста, где у меня ошибка.
Доброе время суток, Alexandr! Я не силен в C++ Builder... но правила C++ никто не отменял. Строка inifile=path+"config.ini" синтаксически неверна. А если и верна, то в inifile будет лежать то, чего никто не ожидает. Ответ отправлен: 02.09.2003, 12:36 Отправитель: Извращенок Отвечает Marouder
Добрый день, Alexandr! 1. Попробуй ListView1->Clear(); 2. Ошибка в Item->SubItems->Strings[i]. Подумай хорошо. Я думаю, надо Item->SubItems->Strings[0]. Ответ отправлен: 01.09.2003, 13:43 Отправитель: Marouder
Форма отправки вопроса
Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+
или отправлять вопросы с сайта по адресу:
http://rusfaq.ru/cgi-bin/Message.cgi.