Forum in READ ONLY mode! All questions and discussions on Discord official server, invite link: https://discord.gg/VxsGzJ7

Проблемка с посроением скрипта

тут можно задать вопрос по скриптингу
Post Reply
Drunk Iguana
Neophyte
Neophyte
Posts: 32
Joined: 09.10.2006 13:56
Contact:

Проблемка с посроением скрипта

Post by Drunk Iguana »

Вощем такая проблема.
Пытаюсь юзать процедуру которая описана в коде ниже, пишет во такое
4:53:08 [***]: Compiler: [Error] (***.sc at 29:2): Unknown identifier 'poisk'
с этим мона как то бороться или мож миралекс пофиксит? ) или искать обходные пути?

чтоб было понятнее. такая конструкция выдаст ошибку на третей строке

Code: Select all

procedure odin;
begin
dva;
end;
 
procedure dva;
begin
odin;
end;
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Re: Проблемка с посроением скрипта

Post by CFA »

ето особенности паскаля :)

Code: Select all

procedure dva; forward;

procedure odin;
begin
dva;
end;
 
procedure dva;
begin
odin;
end;
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Либо переставить в файле процедуру dva выше процедуры odin. В паскале, если ты используешь в тексте скрипта или в какой-нибудь процедуре/функции другую процедуру/функцию - она должна быть прописана в тексте программы раньше, чем она используется.

То, что написано в примере - вообще бред. У тебя замкнутые перекрестные вызовы, то есть бесконечная рекурсия процедур. Ни один язык программирования не поддерживает такого. Ведь рекурсия жрет память за счет клонирования вызовов. Рано или поздно память заканчивается, что приводит к краху программы.
Drunk Iguana
Neophyte
Neophyte
Posts: 32
Joined: 09.10.2006 13:56
Contact:

Post by Drunk Iguana »

Все норм никаких крахов небуит.
Жаль вощем что такая фишка непашет, буду думать как лучше поправить.
CFA
Developer
Developer
Posts: 492
Joined: 20.04.2006 6:03
Contact:

Post by CFA »

Drunk Iguana wrote:Все норм никаких крахов небуит.
Жаль вощем что такая фишка непашет, буду думать как лучше поправить.
мой пост то прочитать не ага?
если функция вызываеться раньше чем, описана - нада сделать вот так procedure dva; forward;
Drunk Iguana
Neophyte
Neophyte
Posts: 32
Joined: 09.10.2006 13:56
Contact:

Post by Drunk Iguana »

а сенк ) чет ступил незаметил )
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

CFA wrote:мой пост то прочитать не ага?
если функция вызываеться раньше чем, описана - нада сделать вот так procedure dva; forward;
А ты его скрипт прочитал? Процедуру dva ты форварднешь, но в ней-то odin вызывается... :lol:

Хотя вполне допускаю, что все равно работать будет. Я паскаль 15 лет назад изучал, так что все не упомнишь...
DerMeister
Novice
Novice
Posts: 54
Joined: 19.11.2006 17:35

Post by DerMeister »

Edred wrote:
CFA wrote:мой пост то прочитать не ага?
если функция вызываеться раньше чем, описана - нада сделать вот так procedure dva; forward;
А ты его скрипт прочитал? Процедуру dva ты форварднешь, но в ней-то odin вызывается... :lol:

Хотя вполне допускаю, что все равно работать будет. Я паскаль 15 лет назад изучал, так что все не упомнишь...
Можно. http://www.geocities.com/SiliconValley/ ... l1005.html последний пример:

Code: Select all

procedure a;
begin
  b;   { illegal }
end;

procedure b;
begin
  a;
end;
а:

Code: Select all

procedure b; forward;

procedure a;
begin
  b;    { now legal }
end;

procedure b;
begin
  a;
end;
=_)***
Edred
Moderator
Moderator
Posts: 559
Joined: 28.03.2006 21:29

Post by Edred »

Ну что ж, век живи, век учись. В мое время в паскале (и тем более в алголе) такой штуки не было. Хз зачем она нужна, но пусть будет.
Post Reply