Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
hodas4
198 / 4 / 3
Регистрация: 08.05.2011
Сообщений: 76
1

Как создать глобальную метку?

03.03.2014, 20:15. Просмотров 1065. Ответов 8
Метки нет (Все метки)

Имеется таймер с кодом:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
 
sec++;
Label1->Caption=60*prov_kvit-sec;
//wer=StrToInt(Label1->Caption);
if ((StrToInt(Label1->Caption)==0) && (count3q==0)  )
{
Form1->Button1->Click();
Timer1->Enabled=false;
}
else
{
Timer1->Enabled=false;
goto metka3;
}
}
Мне нужно,чтобы прога перешла на метку metka3, которая находится в void __fastcall TForm1::Button1Click(TObject *Sender), но ругается на то,что неизвестный индентификатор, ведь метка не глобальна и видна только для Button1

Я знаю, что метки прошлый век, но мне нужно,чтобы в коде Button1Click пропустился начальный кусочек кода. Может есть другие способы,чтобы перейти в определенный строчку кода Button1?!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.03.2014, 20:15
Ответы с готовыми решениями:

Как создать глобальную переменную для доступа из других файлов?
TStringList* SL = new TStringList; Как создать не в функции, а как глобальную...

Как задать глобальную переменную?
Как задать глобальную переменную которая будет работать на всех формах проги?...

как передать глобальную переменную в класс
Всем привет! подскажите плиз, ответ на такой вопрос? У меня есть массив строк...

Как создать глобальную структуру?
В Unit1 создал структуру: struct baza { String name; int...

Как создать глобальную переменную
Как сделать переменную которая будет роботать везде. Везде- в 1 форме и во...

8
Lelik-pahan
1363 / 781 / 175
Регистрация: 25.11.2009
Сообщений: 1,595
Завершенные тесты: 1
03.03.2014, 20:28 2
берёшь ту часть кода, которая должна выполняться и в Button1Click и по срабатыванию таймера, и выносишь в отдельную функцию. А потом просто вызываешь эту функцию и из Button1Click, и из таймера
0
Байт
Эксперт C
18318 / 12029 / 2506
Регистрация: 24.12.2010
Сообщений: 24,293
03.03.2014, 20:30 3
Лучший ответ Сообщение было отмечено hodas4 как решение

Решение

Цитата Сообщение от hodas4 Посмотреть сообщение
но мне нужно
Разбей код Button1Click на 2 функции. И вызывай там, где тебе нужно, вторую
2
hodas4
198 / 4 / 3
Регистрация: 08.05.2011
Сообщений: 76
03.03.2014, 20:44  [ТС] 4
Идея про разбивку мне сразу пришла....
Пасиб за ответы
0
BRcr
4016 / 2306 / 291
Регистрация: 03.02.2011
Сообщений: 5,064
Записей в блоге: 10
03.03.2014, 21:22 5
Вообще, есть старое доброе правило - разбивать код на логически завершенные элементы. В частности, каждая функция должна выполнять только свою работу, необходимый минимум. И чем больше кусочков будет в паззле под названием "программа", тем проще будет ими управлять.
Я говорю это, лишь потому что по какой-то причине это не очевидно для новичков.
0
SatanaXIII
Супер-модератор
Эксперт С++
5773 / 2772 / 376
Регистрация: 01.11.2011
Сообщений: 6,744
Завершенные тесты: 1
04.03.2014, 09:22 6
А я как всегда с решением в лоб:
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
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
Button1->Tag = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Label1->Caption = "";
 
//metka3:                      ////
if( Button1->Tag == 3 )          //
  Label1->Caption = "metka3 "; ////
 
Label1->Caption = Label1->Caption + "something";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
bool some = true;
if( some )
  {
  //goto metka3;       ////
  Button1->Tag = 3;      //
  Button1Click(Sender);  //
  return;              ////
  }
else
  Button1->Tag = 0;
}
//---------------------------------------------------------------------------
1
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
04.03.2014, 09:28 7
Цитата Сообщение от hodas4 Посмотреть сообщение
Мне нужно,чтобы прога перешла на метку metka3, которая находится в void __fastcall TForm1::Button1Click(TObject *Sender), но ругается на то,что неизвестный индентификатор, ведь метка не глобальна и видна только для Button1
Мне придётся тебя разочаровать, но для Button1 она не видна.
0
hodas4
198 / 4 / 3
Регистрация: 08.05.2011
Сообщений: 76
07.03.2014, 22:11  [ТС] 8
Цитата Сообщение от taras atavin Посмотреть сообщение
но для Button1 она не видна
я вообщето об этом написал в начале: ведь метка не глобальна и видна только для Button1
0
taras atavin
4204 / 1765 / 211
Регистрация: 24.11.2009
Сообщений: 27,565
13.03.2014, 14:24 9
Цитата Сообщение от hodas4 Посмотреть сообщение
я вообщето об этом написал в начале: ведь метка не глобальна и видна только для Button1
Криво прочитал код.
0
13.03.2014, 14:24
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2014, 14:24

Как создать глобальную форму?
Здравствуйте. Как создать глобальную форму в C++/CLI и обращаться к...

Как создать глобальную переменную?
Создаю небольшой проект. Несколько функций и собственно тело программы. В теле...

Как создать глобальную переменную?
Доброй ночи. Спасайте. Надо создать глобальную переменную string, Значение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru