forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Нет вывода на экран (http://forum.boolean.name/showthread.php?t=7824)

Suicide 12.02.2009 20:10

Нет вывода на экран
 
Вот написал программку, которая должна выводить расписание моей группы, но почему-то drawText не работает? Не могли бы ли Вы, пожалуйста, подсказать, что у меня не так?
Переменная nn - это день номер недели(первая или вторая), по которой учимся. p1 и p2 - подгруппа(тк для каждой отдельно расписание по некоторым дням.
Код:

program NewProject;
var
    senya, zavtra,p11,p22,i,k,nn : integer;
    play, clicked : command;
s,z,p1,p2:boolean;
mm:array[2..7] of integer; 
  begin
s:= false;
z:= false;
p1:=false;
p2:=false;
 mm[2]:=28;
 mm[3] := 31;
 mm[4] := 30;
 mm[5] := 31;
 mm[6] := 30;
 mm[7] := 31;
        showMenu('1 или 2 подгруппа?', CH_IMPLICIT);
   
    p11 := menuAppendString('1');
    p22 := menuAppendString('2');

    play := createCommand('?', CM_SCREEN, 1);
    addCommand(play);

    repeat
      delay(100);
      clicked := getClickedCommand;
    until clicked = play;
    if menuGetSelectedIndex = p11 then p1 := true;

    if menuGetSelectedIndex = p11 then p2:=true;
 clearForm;
 
i := getMonth(getCurrentTime);
k:=0;
while i<>2 do
begin
k := k + mm[i];
i := i - 1;
end;
k := k + getDay(getCurrentTime)-1;
if odd(trunc(k/7)) then nn := 1;
if not odd(trunc(k/7)) then nn := 2;
showCanvas;   
  setColor(0, 0, 255);
if getWeekDay(getCurrentTime) = 2 then
begin
if nn=1 then
begin
drawText('АИС', 0, 0);
drawText('БЖ', 0, 10);
drawText('КС', 0, 20);
drawText('ПСИХОЛОГИЯ', 0, 30);
end;
if nn=2 then
begin
drawText('ФИЛОСОФИЯ', 0, 0);
drawText('БЖ', 0, 10);
drawText('КС', 0, 20);
end;
end;

if getWeekDay(getCurrentTime) = 3 then
begin
if (nn =1) and p1 then
begin
drawText('КС', 0, 0);
drawText('ПСИХОЛОГИЯ', 0, 10);
end;
if (nn =2) and p1 then
begin
drawText('----------', 0, 0);
drawText('МЕТРОЛОГИЯ', 0, 10);
end;
if (nn =1) and p2 then
begin
drawText('---------', 0, 0);
drawText('ПСИХОЛОГИЯ', 0, 10);
end;
if (nn =2) and p2 then
begin
drawText('КС', 0, 0);
drawText('МЕТРОЛОГИЯ', 0, 10);
end;
end;

if getWeekDay(getCurrentTime) = 4 then
begin
if nn = 1 then drawText('ФИЛОСОФИЯ', 0, 0);
if nn = 2 then drawText('ПСИХОЛОГИЯ', 0, 0);
drawText('ПО АИС', 0, 10);
drawText('ФИЗРА', 0, 20);
drawText('АСУП', 0, 30); 
end;

if getWeekDay(getCurrentTime) = 5 then
begin
if (nn =1) and p1 then
begin
drawText('АНГЛ', 0, 0);
drawText('КС', 0, 10);
drawText('РЭИС', 0, 20);
end;
if (nn =2) and p1 then
begin
drawText('АНГЛ', 0, 0);
drawText('АИС', 0, 10);
drawText('ФИЛОСОФИЯ', 0, 20);
drawText('КС', 0, 30);
end;
if (nn =1) and p2 then
begin
drawText('-------------', 0, 0);
drawText('КС', 0, 10);
drawText('РЭИС', 0, 20);
drawText('КС', 0, 30);
end;
if (nn =2) and p2 then
begin
drawText('КС', 0, 0);
drawText('АИС', 0, 10);
drawText('ФИЛОСОФИЯ', 0, 20);
end;

end;

if getWeekDay(getCurrentTime) = 6 then
begin
if (nn =1) and p1 then
begin
drawText('АСУП', 0, 0);
drawText('АСУП', 0, 10);
drawText('РЭИС', 0, 20);
end;
if (nn =2) and p1 then
begin
drawText('АСУП', 0, 0);
drawText('ПСИХОЛОГИЯ', 0, 10);
drawText('РЭИС', 0, 20);
end;
if (nn =1) and p2 then
begin
drawText('АНГЛ', 0, 0);
drawText('АСУП', 0, 10);
drawText('АСУП', 0, 20);
drawText('РЭИС', 0, 30);
end;
if (nn =2) and p2 then
begin
drawText('АНГЛ', 0, 0);
drawText('ПСИХОЛОГИЯ', 0, 10);
drawText('АСУП', 0, 20);
drawText('РЭИС', 0, 20);
end;

end;


if getWeekDay(getCurrentTime) = 7 then
begin
drawText('ФИЗКУЛЬТУРА', 0, 0);
drawText('МЕТРОЛОГИЯ', 0, 10);
end;
repaint;
delay(4333);


end.


beZ_probleM 12.02.2009 21:45

Ответ: Нет вывода на экран
 
ты наверное хотел взять день недели а не месяца, тогда
замени
i := getMonth(getCurrentTime);
на
i := getWeekDay(getCurrentTime);

потомучто у тебя токо шесть елементов в массиве
mm:array[2..7] of integer;
а если ты будешь брать день месяца например 21 то такого елемента не будет существовать)
тоесть твоя прога будет работать токо когда число месяца от меньше 7=)
удачи;)

Suicide 17.02.2009 21:34

Ответ: Нет вывода на экран
 
Не, там всё правильно. Больше никто не смотрел? Почему может не происходить вывод на экран?

ViNT 17.02.2009 22:04

Ответ: Нет вывода на экран
 
PHP код:

:= getMonth(getCurrentTime);
k:=0;
while 
i<>do //<<-----------------------
begin
:= mm[i];
:= 1;
end

На стрелке код зацикливается, если i < 3, естественно, до вывода дело не доходит.
Похоже, в j2me месяцы с нуля нумереются, сейчас февраль и у меня единицу выдает, а если в указанную точку подать i=1, то i никогда не станет равно 2.

beZ_probleM 17.02.2009 23:51

Ответ: Нет вывода на экран
 
ViNT можно перевести часы на месяц назад и проверить действительно ли выдаёт ноль=)

ViNT 18.02.2009 00:14

Ответ: Нет вывода на экран
 
Цитата:

Сообщение от beZ_probleM (Сообщение 98479)
ViNT можно перевести часы на месяц назад и проверить действительно ли выдаёт ноль=)

В обшем-то уже вычитал, что 0 не выйдет, т.к. по хелпу функция возвращает значение от 1 до 12, но факт оcтается фактом - прога зависает потому, что при входе в цикл i=1.


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

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