Здравствуйте, народ
Написал себе программку, все нормально. Решил добавить еще пару функций. В отдельной маленькой программе их все отладил, вставил аккуратненько - при сборке мидлета вылетает ошибка "Nested functions or procedures are not supported". Структура программ совершенно одинаковая, но в одной функции работают, в другой нет. Чего вообще такая ошибка значит? Нет, перевести с английского я могу, я смысла не понимаю
Чтобы не быть голословным, вот пример работающей программы:
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 (даже не вызывать их, а просто добавить в текст), тут же вылетает ошибка. Функций с такими названиями там нет, и в чем может быть проблема, не могу понять.