Форум программистов, компьютерный форум, киберфорум
Pascal ABC
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
0 / 0 / 1
Регистрация: 12.11.2017
Сообщений: 28

Как определить label из программы в процедуре?

10.06.2018, 18:36. Показов 2696. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
goto 1 в процедуре не видит метку 1 в основной программе. Как исправить?

Pascal
1
2
3
4
5
6
7
8
9
10
uses GraphABC, Events;
var ...
label 1;
...
procedure KeyDown(Key: integer);
begin
 
...
if key = vk_Escape then goto 1;
end;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2018, 18:36
Ответы с готовыми решениями:

Как менять цвет текста label в процедуре ButtonClick?
Я понимаю, что я совсем новичок, но ответьте, пожалуйста на вопрос в заголовке (Как менять цвет текста label в процедуре ButtonClick?)!!!...

Как в delphi в процедуре объявить массив как параметр а затем в самой программе напечатать его в поле label
Помогите пожалуйста выдает ошибку "Project PShifr6.exe raised exception class EaccessViolation vith message ' access violation at address...

Как выйти из программы в процедуре?
Вот собственно проедура: procedure MouseDown(x,y,mb:integer); begin if...

5
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
10.06.2018, 20:23
Цитата Сообщение от zik_rey Посмотреть сообщение
не видит метку 1 в основной программе.
А где эта метка описана, и что она должна выполнять?
0
0 / 0 / 1
Регистрация: 12.11.2017
Сообщений: 28
10.06.2018, 20:52  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
А где эта метка описана, и что она должна выполнять?
Метка описана в разделе операторов и должна переносить в начало программы. насколько я знаю, при определении процедуры в ней можно определять только свои метки и goto работает только внутри процедуры, но мне нужно что чтобы goto в процедуре работал с остальной программой
0
Почетный модератор
 Аватар для Puporev
64315 / 47611 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
10.06.2018, 21:05
Ну продолжайте лепить чушь дальше.
0
0 / 0 / 1
Регистрация: 12.11.2017
Сообщений: 28
10.06.2018, 21:08  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Ну продолжайте лепить чушь дальше.
Как скажешь
0
Модератор
10445 / 5737 / 3406
Регистрация: 17.08.2012
Сообщений: 17,454
12.06.2018, 17:26
Лучший ответ Сообщение было отмечено zik_rey как решение

Решение

zik_rey, рекомендую Вам изучить синтаксис паскаля заново. Никак нельзя перейти из подпрограммы на метку в основной программе или в другой подпрограмме, равно как и из основной программы в какую-либо подпрограмму. Это непозволительно с точки зрения синтаксиса языка паскаль.

Да и делать такой переход не следует, поскольку этим несуразным действием Вы будете рушить программный стек. При вызове подпрограммы в стек пишутся параметры подпрограммы, а также адрес возврата. Указатель стека, естественно, увеличивается на размер записанных в стек данных. При (нормальном) возврате из подпрограммы стек очищается, и значение указателя стека становится таким же, как и до вызова подпрограммы. В случае, если Вам удастся осуществить Вашу нелепую задумку (ассемблер в помощь и не использовать учебный диалект паскаля Pascal ABC), стек очищаться не будет, и с каждым вызовом будет продолжать расти. При достаточном количестве вызовов произойдёт переполнение стека. Это бы ладно, работает программа нестабильно, да и ляд с ней, только вот... Кроме подпрограмм, которые написали Вы, в Вашей программе должны вызываться различные служебные подпрограммы, и, если указатель стека не будет возвращён на его законное место, и, если до Вашей подпрограммы была вызвана служебная подпрограмма, и до вызова Вашей подпрограммы не было возврата из служебной подпрограммы, то, что там будет удалено из стека и куда будет произведён возврат из служебной подпрограммы - сиё тайна великая есть. Ваша программа в лучшем случае завершится аварийно, или подвесит операционную систему, или ещё какую-либо гадость сделает.

Можно, конечно, чистить стек врукопашную, и только затем переходить на начало основной программы (да-да, ассемблер в помощь, и пользоваться чем-нибудь посерьёзней PABC), но хлопотно это очень, а посему и не нужно.

Надеюсь, доходчиво объяснил. Рекомендую Вам пересмотреть структуру Вашей программы. И - не увлекайтесь оператором goto. Применять его следует исключительно в тех случаях, когда он действительно необходим. К примеру, для досрочного выхода из нескольких вложенных циклов.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.06.2018, 17:26
Помогаю со студенческими работами здесь

Как В Процедуре Обработкавыбора Определить Откуда Она Вызвана? 1с8
Доброго времени суток, коллеги! Есть форма обработки (НЕ управляемая), на ней два списка значений - Список1 и Список2. Возле Списка1 есть...

Как обновить label при запуске программы?
Подскажите пожалуйста как при запуске программы обновить label, а то обновляется только при нажатии на нее private void...

Как сделать чтоб текст в label не вылазил за рамки программы
Всем привет. ребят подскажите как сделать чтоб текст в label не вылазил за рамки программы у меня вот так нужно сделать границы текста...

Как определить по какому Label был совершен клик
Здравствуйте. Есть несколько LinkLabel. Все они при нажатии назначены на один и тот же метод. Как определить какой именно линк был...

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


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru