|
Основной форум Сюда все проблемы связанные с программированием. |
12.02.2009, 20:10
|
#1
|
AnyKey`щик
Регистрация: 20.04.2008
Сообщений: 2
Написано 0 полезных сообщений (для 0 пользователей)
|
Нет вывода на экран
Вот написал программку, которая должна выводить расписание моей группы, но почему-то 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.
Последний раз редактировалось Suicide, 12.02.2009 в 20:31.
|
(Offline)
|
|
12.02.2009, 21:45
|
#2
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Нет вывода на экран
ты наверное хотел взять день недели а не месяца, тогда
замени
i := getMonth(getCurrentTime);
на
i := getWeekDay(getCurrentTime);
потомучто у тебя токо шесть елементов в массиве
mm:array[2..7] of integer;
а если ты будешь брать день месяца например 21 то такого елемента не будет существовать)
тоесть твоя прога будет работать токо когда число месяца от меньше 7=)
удачи
|
(Offline)
|
|
17.02.2009, 21:34
|
#3
|
AnyKey`щик
Регистрация: 20.04.2008
Сообщений: 2
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Нет вывода на экран
Не, там всё правильно. Больше никто не смотрел? Почему может не происходить вывод на экран?
|
(Offline)
|
|
17.02.2009, 22:04
|
#4
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Нет вывода на экран
i := getMonth(getCurrentTime); k:=0; while i<>2 do //<<----------------------- begin k := k + mm[i]; i := i - 1; end;
На стрелке код зацикливается, если i < 3, естественно, до вывода дело не доходит.
Похоже, в j2me месяцы с нуля нумереются, сейчас февраль и у меня единицу выдает, а если в указанную точку подать i=1, то i никогда не станет равно 2.
|
(Offline)
|
|
17.02.2009, 23:51
|
#5
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Нет вывода на экран
ViNT можно перевести часы на месяц назад и проверить действительно ли выдаёт ноль=)
|
(Offline)
|
|
18.02.2009, 00:14
|
#6
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Нет вывода на экран
Сообщение от beZ_probleM
ViNT можно перевести часы на месяц назад и проверить действительно ли выдаёт ноль=)
|
В обшем-то уже вычитал, что 0 не выйдет, т.к. по хелпу функция возвращает значение от 1 до 12, но факт оcтается фактом - прога зависает потому, что при входе в цикл i=1.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 21:04.
|