Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.05.2010, 02:37   #1
10Rabbit
Пользователь
 
Регистрация: 09.10.2009
Сообщений: 17
По умолчанию Нужно обнаружить ошибку. Паскаль.

После ввода значений списка, при вызове процедуры выбивает ошибку(а точнее вылетает)(exited with exitcode = 1), пробовал без процедуры, открывает граф на весь экран и ни чего непроисходит. Помогите разобраться.
Код:
Program DinamSpisoc;
Uses Crt, Dos, Graph;

Const Pat='C:\FPC\2.2.4\bin\i386-win32';

      Patt:FillPatternType=(128,64,32,16,8,4,2,1);
type
  list = ^TypSpisoc;
  TypSpisoc = record
  nd: string;
  br: string;
  dt: string;
  st: boolean;
  Next:List;
end;
Var
  n:integer;
  nameDI,brandI:string;
  stateI:boolean;
  elem,beg,x:List;
Procedure DrawList;
var
  GD,GM,y1,y2,y3:Integer;
  named,brand,date,state:string;
begin
named:='Name Device';
brand:='Brand';
date:='Date';
state:='State';
InitGraph(GD,GM,Pat);
GD:=VGA; GM:=VGALo; {For VGALo}
y1:=20;
y2:=y1;
y3:=7;
SetColor(white);
bar(20,y1,500,y2);

SetColor(black);
OutTextXy(27,27,'#');
line(40,y1,40,y2);

SetColor(black);
OutTextXy(47,27,named);
line(160,y1,160,y2);

SetColor(black);
OutTextXy(167,27,brand);
line(280,y1,280,y2);

SetColor(black);
OutTextXy(287,27,date);
line(380,y1,380,y2);

SetColor(black);
OutTextXy(387,27,state);

while elem<>nil do
begin
named:=elem^.nd;
brand:=elem^.br;
date:=elem^.dt;
y1:=y1+20;
y2:=y2+20;
y3:=y3+20;
SetColor(LightBlue);
bar(20,y1,500,y2);
SetColor(black);
OutTextXy(27,y3,'#');
line(40,y1,40,y2);
SetColor(black);
OutTextXy(47,y3,named);
line(160,y1,160,y2);
SetColor(black);
OutTextXy(167,y3,brand);
line(280,y1,280,y2);
SetColor(black);
OutTextXy(287,y3,date);
line(380,y1,380,y2);
SetColor(black);
OutTextXy(387,y3,state);
elem:=elem^.Next;
end;
readkey;
CloseGraph;
end;
begin
New(elem);
elem^.next:=nil;
elem^.nd:='®Ћ';
elem^.br:='11';
New(x);
Readln(x^.nd);
Readln(x^.br);
Readln(x^.dt);
x^.Next:=elem;
elem:=x;
writeln('Следующий');
New(x);
Readln(x^.nd);
Readln(x^.br);
Readln(x^.dt);
x^.Next:=elem;
elem:=x;
readkey;
DrawList;
End.
10Rabbit вне форума Ответить с цитированием
Старый 06.05.2010, 08:56   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Сорри, если че напутал. Паскаль дело давнее.

InitGraph(GD,GM,Pat);
GD:=VGA; GM:=VGALo; {For VGALo}

Ты переменные инициализируешь после InitGraph. Надо вроде наоборот.

GD:=VGA; GM:=VGALo; {For VGALo}
InitGraph(GD,GM,Pat);

Вот так ошибки нет. Четыре полоски какие-то на экране рисует прерывистые. Может я че не понял в вопросе ?

y1:=20;
y2:=y1;
y3:=7;
SetColor(white);
bar(20,y1,500,y2);

Зачем прямоугольник в виде полоски ?

SetColor(black);
OutTextXy(27,27,'#');
line(40,y1,40,y2);

Зачем черными буквами на черном фоне. Может по задумке писалось на белом прямоугольнике ?
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 06.05.2010, 17:33   #3
10Rabbit
Пользователь
 
Регистрация: 09.10.2009
Сообщений: 17
По умолчанию

Спасибо, сечас переделаю, а напутал помойму я)
10Rabbit вне форума Ответить с цитированием
Старый 06.05.2010, 17:58   #4
10Rabbit
Пользователь
 
Регистрация: 09.10.2009
Сообщений: 17
По умолчанию

Да уж оштбки, дествительно были глупые, ещё раз спасибо), вот то что я хотел увидеть:
Код:
Program DinamSpisoc;
Uses Crt, Dos, Graph;

Const Pat='C:\FPC\2.2.4\bin\i386-win32';

      Patt:FillPatternType=(128,64,32,16,8,4,2,1);
type
  list = ^TypSpisoc;
  TypSpisoc = record
  nd: string;
  br: string;
  dt: string;
  st: boolean;
  Next:List;
end;

Var
  n:integer;
  nameDI,brandI:string;
  stateI:boolean;
  elem,beg,x:List;

Procedure DrawList;
var
  GD,GM,k1,k2,k3:Integer;
  named,brand,date,state, num:string;
begin
named:='Name Device';
brand:='Brand';
date:='Date';
state:='State';
GD:=VGA; GM:=VGALo; {For VGALo}
InitGraph(GD,GM,Pat);
N:=0;
k1:=20;
k2:=20;
k3:=27;
SetColor(white);
bar(20,20,500,40);

SetColor(black);
OutTextXy(27,27,'#');
line(40,20,40,40);

SetColor(black);
OutTextXy(47,27,named);
line(160,20,160,40);

SetColor(black);
OutTextXy(167,27,brand);
line(280,20,280,40);

SetColor(black);
OutTextXy(287,27,date);
line(380,20,380,40);

SetColor(black);
OutTextXy(387,27,state);

while elem<>nil do
begin
named:=elem^.nd;
brand:=elem^.br;
date:=elem^.dt;
N:=N+1;
k1:=k1+20;
k2:=k2+40;
k3:=k3+20;
str(N,num);
SetColor(LightBlue);
bar(20,k1,500,k2);

SetColor(black);
OutTextXy(27,k3,num);
line(40,k1,40,k2);

SetColor(black);
OutTextXy(47,k3,named);
line(160,k1,160,k2);

SetColor(black);
OutTextXy(167,k3,brand);
line(280,k1,280,k2);

SetColor(black);
OutTextXy(287,k3,date);
line(380,k1,380,k2);

SetColor(black);
OutTextXy(387,k3,state);

elem:=elem^.Next;
end;




readkey;
CloseGraph;
end;
begin


New(elem);

New(x);
Readln(x^.nd);
Readln(x^.br);
Readln(x^.dt);
x^.Next:=elem;
elem:=x;
writeln('следущий');
New(x);
Readln(x^.nd);
Readln(x^.br);
Readln(x^.dt);
x^.Next:=elem;
elem:=x;

writeln('список:');



readkey;
DrawList;

End.
10Rabbit вне форума Ответить с цитированием
Старый 07.05.2010, 04:19   #5
10Rabbit
Пользователь
 
Регистрация: 09.10.2009
Сообщений: 17
По умолчанию

Попути возник вопрос: почему список отображается полностью залитый белым цветом, хотя каждая последующая строка после заголовка по идеи должна заливаться LightBlue?
Код:
SetColor(LightBlue);
bar(20,k1,500,k2);
Решил сделать так что бы чередовался цвет переписав так:
(Объявив n как integer и прсвоил 0)
Код:
n:=n+1;
...
if odd(n) = true then
SetColor(LightGray)
else SetColor(DarkGray);
но всеравно заливает белым.
10Rabbit вне форума Ответить с цитированием
Старый 07.05.2010, 10:21   #6
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Вот так.

Код:
SetFillStyle(SolidFill,LightBlue);
bar(20,k1,500,k2);
Setcolor - Это цвет для текста , линий. Для заливки SetFillStyle.

Ты что за Паскаль используешь. Не разберу. Если Turbo Pascal 7.0, как постишь сюда русский текст в досовой кодировке и он правильно отображается.

Код:
writeln('следущий');
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 08.05.2010, 04:13   #7
10Rabbit
Пользователь
 
Регистрация: 09.10.2009
Сообщений: 17
По умолчанию

Я на free и без рус ком), а постчу или постю руские буквы ручками, то есть исправляю кракозябры. Случайно ни кто незнает как во graph отследить поведение мыши, нажатие, протяжку и тд?
10Rabbit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужно найти ошибку в программе (С++) STIFFmaster_LP Помощь студентам 13 24.01.2010 00:44
нужно найти ошибку Стёпыш Помощь студентам 5 08.12.2009 18:13
Нужно найти ошибку в коде Вован111 Помощь студентам 15 08.11.2009 14:33
нужно исправить ошибку TheVenny Помощь студентам 17 06.11.2008 16:26
Помогите! Не могу обнаружить ошибку pilevas Помощь студентам 1 23.06.2008 10:48