Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2015, 17:04   #1
olenka.ke
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 16
Вопрос Как перейти в процедуру, в которой была вызвана другая процедура

я нахожусь, например, в процедуре1. при каких-либо действиях из процедуры1 я перехожу в процедуру2. как потом в процедуре2 вернуться обратно в процедуру1???
olenka.ke вне форума Ответить с цитированием
Старый 31.10.2015, 17:14   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure A;
procedure B;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure A;
begin
   //
   B;
   //
end;

procedure B;
begin
   //
   A;
   //
end;

end.
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 31.10.2015, 17:21   #3
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
procedure B;
begin
    writeln('IN B');
    writeln('OUT B');
end;

procedure A;
begin
    writeln('IN A');
    B;
    writeln('OUT A');
end;

begin
    A;
end.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Старый 31.10.2015, 17:32   #4
olenka.ke
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 16
По умолчанию

вы меня не поняли. если рассматривать этот пример
Код:
procedure B;
begin
    writeln('IN B');
    writeln('OUT B');
end;

procedure A;
begin
    writeln('IN A');
    B;
    writeln('OUT A');
end;

begin
    A;
end.
то мне надо как то из процедуры B, которая вызывается в А, перейти обратно в А

Последний раз редактировалось olenka.ke; 31.10.2015 в 17:34.
olenka.ke вне форума Ответить с цитированием
Старый 31.10.2015, 17:37   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
перейти обратно в А
то бишь ВЕРНУТЬСЯ РАНЬШЕ "положенного" срока
Код:
procedure A;
begin
///что-то делаем
Exit;
// а это делать не будем
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 31.10.2015, 17:53   #6
type_Oleg
Старожил
 
Аватар для type_Oleg
 
Регистрация: 02.03.2008
Сообщений: 2,499
По умолчанию

Цитата:
Сообщение от olenka.ke Посмотреть сообщение
.. мне надо как то из процедуры B, которая вызывается в А, перейти обратно в А
Непонятно, что непонятно.
Любая процедура и функция выполняется, а потом когда выполнится, после слова end; в конце процедуры происходит возвращение туда, откуда вызвали.
В некоторых языках кстати, вместо end; так и пишется return, то есть возвращение.

PS Можно вернуться до end; , с помощью Exit, как написано в #5. Но естественно, вот так безусловно не имеет смысла писать Exit, тогда зачем все , что между Exit и end; . Обычно, что-то проверяется, типа
Код:
if x<0 then Exit;

Последний раз редактировалось type_Oleg; 31.10.2015 в 17:58.
type_Oleg вне форума Ответить с цитированием
Старый 31.10.2015, 17:56   #7
olenka.ke
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 16
По умолчанию

я пробовала exit - он не выводит из подпрограммы. возможно потому, что много составных операторов
olenka.ke вне форума Ответить с цитированием
Старый 31.10.2015, 17:59   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
он не выводит из подпрограммы
выводит, если с ифами не напутано
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 31.10.2015, 18:04   #9
olenka.ke
Пользователь
 
Регистрация: 18.10.2015
Сообщений: 16
По умолчанию

что значит "если с ифами не напутано", как там можно их напутать?
olenka.ke вне форума Ответить с цитированием
Старый 31.10.2015, 18:08   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Элементарно - код такой, что до него управление не доходит. Ошибка в логике или непонимание того, что пишешь. Бывает
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать, чтобы класс был в отдельном модуле и была программа, к которой он подключается romantik1993 Помощь студентам 3 28.11.2014 20:31
перейти в другую процедуру Ципихович Эндрю Microsoft Office Word 3 27.02.2012 19:05
как проверить какая процедура была выполнена padsyukin Общие вопросы Delphi 2 01.09.2011 16:08
Вставить в ячейку время когда была заполнена другая ячейка mr.beginner Microsoft Office Excel 7 23.05.2011 11:45
Процедура установки позиции с которой программа должна читать файл не работает. FASM. Crivel Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 13.09.2009 21:46