CyberForum.ru - Форум программистов и сисадминов
Вернуться   Форум программистов и сисадминов CyberForum.ru > Форум программистов > Форум C++ > Форум C++ Builder

Ответ Создать новую тему
 
Старый 29.01.2012, 11:28   #1
ParadoxX27
Новичок
 
Регистрация: 25.01.2012
Адрес: Комсомольск-на-Амуре
Сообщений: 48
Репутация: 4 (4)
По умолчанию Работа с циклом if else.

Доброго утра, дня или вечера! Кому как
Я понимаю, что, возможно, задаю очень глупый вопрос(заранее прошу прощения), но не могу разобраться с циклом.

Код C++
1
2
3
4
5
6
7
8
9
10
11
for (int i=sl->Count-1;i>=0;i--)
if (sl->Strings[i].Pos(edit3->Text))
{
String s=sl->Strings[i];
id=s.SubString(4,s.Pos("Name=")-4).ToInt();
sl->Delete(i);
sl->Delete(i-1);
sl->Delete(i-2);
break;
}
esle Form3->Show();
Если не находится нужного значения, то просто выскакивает ошибка и прога виснет. А надо, чтобы выскакивала другая форма без всяких ошибок.
Получилось только сделать, чтобы форма вместе с ошибкой выскакивала.
ParadoxX27 вне форума
Другие темы раздела
Проводник при создании Ole объекта C++ Builder
Господа решил модернизировать свою программу. Смысл ее состоит в том, чтобы из папки, где jpg файлы, грузить их в word. В конце каждого загруженного рисунка в ворде вставляет строку, где написано название файла. В данной версии путь к этой папке фиксирован в тексте TStringList *b = new.... Проводник при создании Ole объекта
C++ Builder Как скрыть колонки в стринггриде?
Всем привет! :senor: задача бональна - ну я чет немогу ее решить. надеюсь общими мыслями найти верное решение. вот что я хочу реализовать в програмке: обычный StringGrid1 есть колонки: 0_________1______2__________3___________________4_________ |№ строки | адрес | описание | координата на.... Как скрыть колонки в стринггриде?
Старый 30.01.2012, 14:13   #41
LK
Модератор
 
Аватар для LK
 
Регистрация: 09.04.2010
Сообщений: 9,548
Репутация: 6295 (3791)
По умолчанию Re: Работа с циклом if else.

я бы убрал break; и return; и посмотрел.
LK вне форума
Старый 30.01.2012, 14:23   #42
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 23.09.2011
Сообщений: 796
Репутация: 502 (379)
По умолчанию Re: Работа с циклом if else.

Код C++
1
2
3
4
5
6
7
8
9
10
11
      bool bylo;
      for (int i=sl->Count-1;i > 1;i--)
        if (sl->Strings[i].Pos(Edit3->Text)) 
        {
          sl->Delete(i);
          sl->Delete(i-1);
          sl->Delete(i-2);
          bylo = true ;
          i -= 2;
        }
      if (!bylo) ShowMessage("Not Found");
nick42 вне форума
Старый 31.01.2012, 15:34  [ТС]   #43
ParadoxX27
Новичок
 
Регистрация: 25.01.2012
Адрес: Комсомольск-на-Амуре
Сообщений: 48
Репутация: 4 (4)
По умолчанию Re: Работа с циклом if else.

Вот весь код кнопки, при выполнении условия if в первом цикле всё работает нормально, ошибок не вылетает. Но если выполняется else {ShowMessage("Not Found");}, то после нажатия в этом сообщении на "Ок" вылетает "raised exception class EStringListError with message List index out of bounds (-1)"

Код C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
int id;
 
void __fastcall TForm1::Button4Click(TObject *Sender)
{
TStringList* sl= new TStringList();
sl->LoadFromFile("Variables.txt");
bool x;
int i;
        for (i=sl->Count-1;i>1;i--)
        if (sl->Strings[i].Pos(edit3->Text)) {x=true; break;}
        else x=false;
        if(x)
        {
          String s=sl->Strings[i];
          id=s.SubString(4,s.Pos("Name=")-4).ToInt();
          sl->Delete(i);
          sl->Delete(i-1);
          sl->Delete(i-2);
        }
        else {ShowMessage("Not Found");}
sl->SaveToFile("Variables.txt");
sl->LoadFromFile("App.ini");
sl->Text = StringReplace(sl->Text,"[!ShowMeter App"+String(id)+"]","",TReplaceFlags()<<rfReplaceAll);
sl->Text = StringReplace(sl->Text,"[!HideMeter App"+String(id)+"]","",TReplaceFlags()<<rfReplaceAll);
int u = sl->IndexOf("[Back"+String(id)+"]");
for (i=0;i<8;i++)
{
sl->Delete(u);
}
int p = sl->IndexOf("[App"+String(id)+"]");
for (i=0;i<15;i++)
{
sl->Delete(p);
}
sl->Strings[14];
int idY=sl->Values["Y"].ToInt();
idY+=2;
sl->Values["Y"]=idY;
sl->Strings[15];
int idH=sl->Values["H"].ToInt();
idH-=30;
sl->Values["H"]=idH;
sl->SaveToFile("App.ini");
delete sl;
edit3->Clear();
Form2->Show();
}
Помогите, пожалуйста, подскажите, в чём причина ошибки?
ParadoxX27 вне форума
Старый 31.01.2012, 15:49   #44
QVO
Форумчанин
 
Аватар для QVO
 
Регистрация: 26.10.2010
Адрес: Симферополь
Сообщений: 719
Репутация: 525 (336)
По умолчанию Re: Работа с циклом if else.

ParadoxX27, так я вас предупреждал. вы вышли за пределы при удаление.
QVO вне форума
После регистрации реклама в сообщениях будет скрыта
Старый 31.01.2012, 15:52  [ТС]   #45
ParadoxX27
Новичок
 
Регистрация: 25.01.2012
Адрес: Комсомольск-на-Амуре
Сообщений: 48
Репутация: 4 (4)
По умолчанию Re: Работа с циклом if else.

Цитата Сообщение от QVO Посмотреть сообщение
ParadoxX27, так я вас предупреждал. вы вышли за пределы при удаление.
Так вот именно, что при удалении нет никаких ошибок, а вот если запись не находится и удаление не производится, а выдаётся сообщение "Not Found" - вот тогда и выдаётся ошибка.
ParadoxX27 вне форума
Ответ Создать новую тему

Похожие темы
Тема Автор
Delphi для начинающих Работа с циклом FOR
День добрый, требуется циклом пройтись по комбобоксам и едитам и зделать их видимыми, ну или активными: for c:=1 to J do Form1.ComboBox1.Enabled:=true; Edit24.Visible:=false; тоже и для Едитов, проблема в том КАК ИХ ПЕРЕЧИСЛИТЬ В ЦИКЛЕ? ПРОБОВАЛ Form1.ComboBox.Enabled:=true; и ...
xomakec
PHP и базы данных Работа с циклом
У меня есть вот такой цикл, здесь выводится список новостей $result = mysql_query("SELECT id,title,cat,short_description,date,author FROM news ORDER BY id ",$db); if (!$result) { echo "<p>Запрос на выборку данных из базы не прошел. Напишите об этом администратору...
a-d-a-m-s
Delphi для начинающих работа с циклом
Здравствуйте. Подскажите, что исправить в коде. Программа последовательно открывает файлы txt и ищет в них ключевое слово, в случае если слово нашлось, она должна записать адрес файла в Мемо3, который она открыла, а если не нашлось, то в Мемо3 не нужно нечего записывать. Сейчас если в файле не...
aleks_tav
Delphi Работа с циклом
У меня есть код программы: for i:=1 to N do begin FMaxMinStr(a,smin,smax,i); for j:=1 to M do begin FMaxMinCol(a,cmin,cmax,j); if ((cmin=a) and (smax=a)) or ((cmax=a) and (smin=a)) then begin
Лярик
Turbo Pascal Работа с циклом while..do
Здравствуйте! Я недавно начал изучать pascal. Взял для изучения книгу "Алгоритмизация и программирование на Турбо Паскале". Столкнулся с проблемой, не понимаю что надо делать в задании. фото задания http://img29.imageshack.us/img29/2471/im1pk.png http://img706.imageshack.us/img706/2685/im2j.png...
Rhino
Опции темы

Текущее время: 00:33. Часовой пояс GMT +4.

Компьютерный форум программистов и сисадминов
Powered by vBulletin® Version 3.8.7 PL2
Copyright ©2000 - 2012, vBulletin Solutions, Inc.
Рейтинг@Mail.ru Яндекс.Метрика