Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Помогите разобраться код

6.8K
20 апреля 2010 года
Mave
15 / / 20.11.2004
Есть код на Pascal. Пытаюсь открыть с помощью Turbo Pascal for Windows на Win7, выдает ошибки со встроенными модулями (crt,graph). Добавлял модули, всеравно - появляется черный экран и обратно возврат к коду. Как понимаю по коду должно быть что-то типа графика. Может у меня компилятор не тот может че еще. Если кто запустит с положительным результатом скажите через что и как. И еще кто может поправить ее для Pascal ABC???
За ранее спс!

[highlight=pаscal]
program Agl;
uses crt,graph;
const e=1e-8;
High=440;
Width=610;
t1 :array[1..7] of real=(0.0,1326.31,710.52,189.47,47.36,31.57,28.42);
s1 :array[1..7] of real=(0.0,18.0,53.4,120.0,180.0,390.0,540.0);
t10:array[1..10] of real=(30.0,94.73,129.47,394.73,710.52,1200.0,363.15,157.89,59.99,28.42);
s10:array[1..10] of real=(0.0,4.8,12.0,18.0,30.0,45.0,126.0,180.0,240.0,540.0);
t15:array[1..11] of real=(30.0,78.94,129.47,394.73,710.52,1184.21,615.0,268.42,126.31,31.57,28.42);
s15:array[1..11] of real=(0.0,9.0,18.6,36.0,53.4,60.0,120.0,180.0,240.0,390.0,540.0);
t80:array[1..8] of real=(30.0,60.0,45.0,47.36,394.73,1357.89,757.89,221.05);
s80:array[1..8] of real=(0.0,15.0,60.0,195.0,240.0,246.0,396.0,540.0);
t160:array[1..9] of real=(30.0,60.0,45.0,47.36,31.57,91.57,742.1,1436.84,1152.63);
s160:array[1..9] of real=(0.0,15.0,60.0,195.0,390.0,432.0,459.0,480.0,540.0);
tsl:array[1..7] of real=(0.0,1326.31,1200.0,1184.21,1263.1578,1357.89,1436.84);
ssl:array[1..7] of real=(0.0,18.0,45.0,60.0,126.0,246.0,480.0);
var
graphdriver,errorcode,graphmode:integer;
x,y,xn,xk,TextX,TextY,dX,dY:real;
minX,maxX,minY,maxY,scaleX,scaleY:real;
LineY,LineX:integer;
Text:string[10];
i:byte;
procedure NameGr;
begin
setcolor(white);
OutTextXY(170,High+30,'ђҐ§г«мв*вл ¬®¤Ґ«Ёа®ў**Ёп Їа®жҐбб* бЇҐЄ**Ёп иЁевл');
OutTextXY(580,High+30,'ўаҐ¬п, c');
OutTextXY(0,10,'T,C')
end;
procedure PaintGraph;
begin
x:=s1[1];
setcolor(2);
setlinestyle(SolidLn, 0, NormWidth);
moveto(round((x-minX)*scaleX)+15,High+4-round((t1[1]-minY)*scaleY));
for i:=1 to 7 do
lineto(round((s1-minX)*scaleX)+15,High+4-round((t1-minY)*scaleY));
delay(1000);
x:=s10[1];
moveto(round((x-minX)*scaleX)+15,High+4-round((t10[1]-minY)*scaleY));
for i:=1 to 10 do
lineto(round((s10-minX)*scaleX)+15,High+4-round((t10-minY)*scaleY));
delay(1000);
x:=s15[1];
moveto(round((x-minX)*scaleX)+15,High+4-round((t15[1]-minY)*scaleY));
for i:=1 to 11 do
lineto(round((s15-minX)*scaleX)+15,High+4-round((t15-minY)*scaleY));
delay(1000);
x:=s80[1];
moveto(round((x-minX)*scaleX)+15,High+4-round((t80[1]-minY)*scaleY));
for i:=1 to 8 do
lineto(round((s80-minX)*scaleX)+15,High+4-round((t80-minY)*scaleY));
delay(1000);
x:=s160[1];
moveto(round((x-minX)*scaleX)+15,High+4-round((t160[1]-minY)*scaleY));
for i:=1 to 9 do
lineto(round((s160-minX)*scaleX)+15,High+4-round((t160-minY)*scaleY));
delay(1000);
setcolor(Yellow);
x:=ssl[1];
moveto(round((x-minX)*scaleX)+15,High+4-round((tsl[1]-minY)*scaleY));
for i:=1 to 7 do
lineto(round((ssl-minX)*scaleX)+15,High+4-round((tsl-minY)*scaleY));
end;
procedure Scale;
begin
x:=s160[1];y:=t160[1];
minX:=s160[1]; minY:=t160[1];
maxX:=s160[1] ; maxY:=t160[1];
for i:=1 to 9 do
begin
if s160<minX then minX:=s160
else
if s160>maxX then maxX:=s160;
if t160<minY then minY:=t160
else
if t160>maxY then maxY:=t160;
end;
scaleX:=Width/(maxX-minX);
scaleY:=High/(maxY-minY);
end;
procedure graphinit;
begin
graphdriver:=detect;
initgraph(graphdriver,graphmode,'a:\');
errorcode:=graphresult;
if errorcode<>grok then
begin
writeln('Error BGI');
halt(1);
end;
end;
procedure LineGor;
begin
setcolor(red);
setlinestyle(SolidLn, 0, ThickWidth);
line(15,High+10,Width+15,High+10);
end;
procedure LineVert;
begin
setcolor(red);
setlinestyle(SolidLn, 0, ThickWidth);
line(15,0,15,High+round(10*High/440));
end;
procedure setgor;
var
i:word;
begin
setlinestyle(3,1,2);
SetTextStyle(SmallFont,HorizDir,0);
TextY:=MaxY;
dY:=abs(MaxY-MinY)/round(10*High/440);
for i:=0 to round(10*High/440) do
begin
setcolor(7);
line(10,i*45,Width+15,i*45);
str(TextY:3:1,Text);
setcolor(White);
if abs(TextY)<e then OutTextXY(LineX+25,i*45,'')
else OutTextXY(LineX+25,i*45,Text);
TextY:=TextY-dY;
end
end;
procedure setver;
var
i:word;
begin
setcolor(7);
setlinestyle(3,1,2);
SetTextStyle(SmallFont, HorizDir,0);
TextX:=s1[1];
dX:=abs(s1[7]-s1[1])/round(12*Width/610);
for i:=0 to round(12*Width/610) do
begin
setcolor(7);
line(i*51+15,0,i*51+15,High+round(10*High/440));
str(TextX:2:1,Text);
setcolor(White);
OutTextXY(i*51,High+10,Text);
TextX:=TextX+dX;
end
end;
begin
clrscr;
Scale;
Graphinit;
Setgor;
Setver;
Linegor;
Linevert;
Paintgraph;
NameGr;
readkey;
closegraph;
end.
[/highlight]
253
20 апреля 2010 года
Proger_XP
1.5K / / 07.08.2004
Ну, во-первых, у вас тут есть:
Цитата: Mave
initgraph(graphdriver,graphmode,'a:\');


где "a:\" - путь к дровам. Вряд ли у вас установлена дискета.

А во-вторых, на Win7 вряд ли у вас получится это дело запустить, поставьте DOSBox или еще какой-нибудь эмулятор доса.

399
21 апреля 2010 года
KIV
432 / / 20.01.2009
Цитата:
А во-вторых, на Win7 вряд ли у вас получится это дело запустить, поставьте DOSBox или еще какой-нибудь эмулятор доса.


У него вроде как паскаль под Windows:

Цитата:
Turbo Pascal for Windows



Цитата:
Если кто запустит с положительным результатом скажите через что и как.


Во FreePascal заработало без изменений. На Tubro Pascal тоже вроде должно запустится. Только не в Windows 7 (хотя на эмуляторе DOS - пожалуйста). А программа выводит вот что:
[ATTACH]4189[/ATTACH]

8.4K
21 апреля 2010 года
z0rch
275 / / 02.09.2008
KIV, Proger_XP, Mave, скажите пожалуйста, почему вы все говорите, что именно на win7 не запустится? что в ней такого особенного?

вот у меня стоит win7, только что специально попробовал запустить этот код - всё отлично отработало.
без каких-либо эмуляторов доса:)
253
21 апреля 2010 года
Proger_XP
1.5K / / 07.08.2004
Цитата: z0rch
KIV, Proger_XP, Mave, скажите пожалуйста, почему вы все говорите, что именно на win7 не запустится? что в ней такого особенного?


Во-превых, тут буквально на днях проскакивала тема, в которой автор мучался отрисовкой графики в семёрке.
Во-вторых, у меня самого с год назад никак не получилось запустить одну древнюю бухгалтерскую прогу под Висту, а она графики даже не нюхала.
Хотя, каюсь, собственного обширного опыта использования 7 у меня нет до сих пор (нельзя сказать, что я об этом жалею, однако).

399
22 апреля 2010 года
KIV
432 / / 20.01.2009
Цитата:
KIV, Proger_XP, Mave, скажите пожалуйста, почему вы все говорите, что именно на win7 не запустится?


В Windows 7 вроде как убрали поддержку DOS приложений (а жаль...). так что запускать DOS программы получится только на эмуляторе.

6.8K
22 апреля 2010 года
Mave
15 / / 20.11.2004
KIV, спасибо. Открыл с помощью FreePascal и получил график. Правда открывал в WinXP, в Win7 еще не пробывал.

P/S/ А кто то может подсказать как переделать это под MatLab и вообще это реально?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог