help! unit graph

Вопросы программирования на Free Pascal, использования компилятора и утилит.

Модератор: Модераторы

Ответить
mike

Сообщение mike »

procedure asd;
var ii: integer;

begin
{fon}
setfillstyle(solidfill, darkgray);
bar(0, 0, getmaxx, getmaxy);
repeat
setcolor(black);
inc(ii, 10);
line(0, (getmaxy div 2)-ii, getmaxx, (getmaxy div 2)-ii);
line(0, (getmaxy div 2)+ii, getmaxx, (getmaxy div 2)+ii);
line((getmaxx div 2)-ii, 0, (getmaxx div 2)-ii, getmaxy);
line((getmaxx div 2)+ii, 0, (getmaxx div 2)+ii, getmaxy);
until (getmaxx <= ii*2);

end;



:o pochemu eta procedura neresujet 4ernije liniii na serom fone?
pozalujsta skazite v 4em moja oshibka !
virt
новенький
Сообщения: 35
Зарегистрирован: 01.12.2005 11:31:41

Сообщение virt »

Потому что переполнение возникает изза неопределенного ii

В начале процедуры добавь

Код: Выделить всё

ii := 0;
mike

Сообщение mike »

spasibo!

no a po4emu kogda eto ne v procedure a v samom osnovanii vsepokazivajetsa a ja ii ne obnuljal !?
virt
новенький
Сообщения: 35
Зарегистрирован: 01.12.2005 11:31:41

Сообщение virt »

А я откуда знаю ,я кода не видел.
Guest

Сообщение Guest »

V etom sluchaje vse rabotajet (vse linii pokazivajutsa)!

uses graph, crt;
var st,tr,ii: integer;

begin
detectgraph(st, tr);
initgraph(st, tr, '');
{fon}
setfillstyle(solidfill, darkgray);
bar(0, 0, getmaxx, getmaxy);
repeat
setcolor(black);
inc(ii, 10);
line(0, (getmaxy div 2)-ii, getmaxx, (getmaxy div 2)-ii);
line(0, (getmaxy div 2)+ii, getmaxx, (getmaxy div 2)+ii);
line((getmaxx div 2)-ii, 0, (getmaxx div 2)-ii, getmaxy);
line((getmaxx div 2)+ii, 0, (getmaxx div 2)+ii, getmaxy);
until (getmaxx <= ii*2);
readln;
closegraph;
end.


A v etot sluchaje toko serij fon i vse (chernije linii nevidni)! (budut vidni jesli toko vna4ale proceduri postavitj ii:=0; )!

uses graph, crt;
var st,tr: integer;

procedure asd;
{var ii: integer;}
begin
{fon}
setfillstyle(solidfill, darkgray);
{ii:=0;}
bar(0, 0, getmaxx, getmaxy);
repeat
setcolor(black);
inc(ii, 10);
line(0, (getmaxy div 2)-ii, getmaxx, (getmaxy div 2)-ii);
line(0, (getmaxy div 2)+ii, getmaxx, (getmaxy div 2)+ii);
line((getmaxx div 2)-ii, 0, (getmaxx div 2)-ii, getmaxy);
line((getmaxx div 2)+ii, 0, (getmaxx div 2)+ii, getmaxy);
until (getmaxx <= ii*2);
end;

begin
detectgraph(st, tr);
initgraph(st, tr, '');
asd;
readln;
closegraph;
end.


Pochemu v pervom sluchaje vse pokazivajetsa a vo vtorom ne 4ego, jesli nepostavitj ii:=0;???
(izvinjajusj za tupostj!)
dunpeal

Сообщение dunpeal »

Потому, глобальные переменные обнуляются (тут инициализируются) по дефолту, а пользовательских процедурах нет
Ответить