forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   nested functions or procedures - что за зверь? (http://forum.boolean.name/showthread.php?t=1510)

archerix 16.09.2006 14:09

nested functions or procedures - что за зверь?
 
Здравствуйте, народ
Написал себе программку, все нормально. Решил добавить еще пару функций. В отдельной маленькой программе их все отладил, вставил аккуратненько - при сборке мидлета вылетает ошибка "Nested functions or procedures are not supported". Структура программ совершенно одинаковая, но в одной функции работают, в другой нет. Чего вообще такая ошибка значит? Нет, перевести с английского я могу, я смысла не понимаю :wallbash:

Чтобы не быть голословным, вот пример работающей программы:
Код:


program schedule;
function minutes(s: String): Integer; Forward;
function timest(i: Integer): String; Forward;
function givenow(sss: String; iaaa: Integer;): String; Forward;
procedure writenow; Forward;
var iii: Integer;
s, s1, s2: String;
i, j, k: Integer;
sprog: Array[0..6] of String;
function minutes(s: String): Integer; // Shedule strings to minutes
begin
minutes:=stringtointeger(Copy(s,0,2))*60+stringtointeger(Copy(s,3,5));
end;
 
function timest(i: Integer): String; // integer to shed string
var imin, ihour: Integer;
smin, shour: String;
begin
ihour:= i div 60;
imin:=i-(ihour*60);
smin:=integertostring(imin);
if Length(smin)=1 then smin:='0'+smin;
shour:=integertostring(ihour);
if Length(shour)=1 then shour:='0'+shour;
timest:=shour+':'+smin;
end;
 
function givenow(sss: String; iaaa: Integer;): String;
var i1, iflag, icur, itel: Integer;
snow, sres: String;
begin
sres:='';
iflag:=0;
for i1:=1 to iaaa do begin
sres:=sprog[i1-1];
snow:=sprog[i1];
if minutes(snow)<minutes(sres) then
begin
iflag:=i1-1;
Break;
end;
end;
sres:='';
for i1:=iaaa downto 0 do begin
snow:=sprog[i1];
itel:=minutes(sss);
if itel<300 then itel:=itel+1440;
icur:=minutes(snow);
if i1>iflag then icur:=icur+1440;
if icur<itel then begin
sres:=sprog[i1];
Break;
end;
end;
givenow:=sres;
end;
 
procedure writenow;
begin
s:='03:27 Test';
s2:=givenow(s, 6);
drawText(s2, 0, 0);
Repaint;
end;
 
 
begin
sprog[0]:='06:25 Film 1';
sprog[1]:='09:05 Film 2';
sprog[2]:='11:20 Film 3';
sprog[3]:='23:03 Film 4';
sprog[4]:='01:00 Film 5';
sprog[5]:='01:20 Film 6';
sprog[6]:='03:25 Film 7';
writenow;
Delay(25000);
end.

Программка выполняет поиск "текущей" телепередачи или же вообще какого-то пункта в расписании. Но стоит взять отсюда в другую программу функции minutes и timest (даже не вызывать их, а просто добавить в текст), тут же вылетает ошибка. Функций с такими названиями там нет, и в чем может быть проблема, не могу понять.

archerix 26.09.2006 03:26

Re: nested functions or procedures - что за зверь?
 
До сих пор не могу этого понять, но заработало. Ошибка сидела совсем в другом месте, а почему МП ругался именно на функции и что за "вложенные функции" - х.з. Вообще его сообщения об ошибках часто только путают :)

Piligrim 26.09.2006 10:00

Re: nested functions or procedures - что за зверь?
 
МР довольно часто путается в определении места ошибки


Часовой пояс GMT +4, время: 18:37.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot