안녕하세요
컴퓨터 언어쪽과 거리가 먼 환경과 대학원생입니다..
교수님께서 예전에 도스시절 파스칼을 이용하여 만든 소스가 있습니다.. 도스에서는 실행이 되는데 문제점은 소스내용과 실행내용을 출력을 할수없어서
인터넷을 통하여 검색하여 알게된 결과 델파이로는 가능하다고 들었습니다.
도스용 파스칼로 실행시 -> Error 15 ; File not found (graph.tpu)
이런 오류 메세지가 나옵니다.
델파이7을 설치하고 소스파일을 열어서 Run을 누르려고 하는데 비활성화 되어있습니다..
이 문제를 어떻게 해결해야하나요?
그리고 그 문제의 소스파일입니다..
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
program Three_phase_diagram;
uses graph,crt;
var graphdriver:integer;
graphmode:integer;
errorcode:integer;
c,x,y,z,sio,alo,cao,mgo,feo,mno,v,cr:real;
i,j,k:integer;
nu,nu2:string;
ch:char;
procedure hardcopy;
var i,j,k,l,m,n1,n2,s:integer;
b:array[0..2]of integer;
w:array[0..7] of integer;
lst:text;
begin
j:=0;
w[0]:=1;w[1]:=2;w[2]:=4;w[3]:=8;
w[4]:=16;w[5]:=32;w[6]:=64;w[7]:=128;
s:=1280;
n2:=trunc(s/256);
n1:=(s mod 256);
assign(lst,'LPT1');rewrite(lst);
write(lst,chr(27),chr(64));
writeln(lst,chr(27),chr(51),chr(24));
repeat
write(lst,chr(27),'*',chr(39),chr(n1),chr(n2));
for i:=0 to 639 do begin
for l:=0 to 2 do begin
b[l]:=0;
for m:=0 to 3 do begin
k:=getpixel(i,j+l*4+m);
if k>0 then k:=1;
b[l]:=b[l]+k*(w[7-m*2]+w[6-m*2]);
end;
end;
write(lst,chr(b[0]),chr(b[1]),chr(b[2]));
write(lst,chr(b[0]),chr(b[1]),chr(b[2]));
end;
writeln(lst);
j:=j+12;
until j>=479;
writeln(lst,chr(12),chr(27),chr(64));
close(lst);
end;
procedure plot(x1,y1:real;co:integer);
begin
setcolor(co);
circle(trunc(70+x1*50),trunc(450-47.9*(y1)),7);
floodfill(trunc(70+x1*50),trunc(450-47.9*(y1)),co);
putpixel(trunc(70+x1*50),trunc(450-47.9*(y1)),co);
end;
procedure draw(x1,y1,x2,y2:real;co:integer);
begin
setcolor(co);
line(trunc(70+x1*50),trunc(450-47.9*(y1)),trunc(70+x2*50),trunc(450-47.9*(y2)));
end;
procedure symbol(x1,y1:real;s:string;co:integer);
begin
setcolor(co);
outtextxy(trunc(70+x1*50),trunc(450-47.9*(y1)),s);
end;
procedure kim;
var cao1,sio1,mgo1,alo1,tot,alo2,sio2,cao2,mgo2,v1:real;
begin
tot:=(cao+sio+alo);
sio1:=(sio*100/tot);
cao1:=(cao*100/tot);
alo1:=(alo*100/tot);
{mgo1:=(mgo*100/tot);}
sio2:=sio1/100;
alo2:=alo1/100;
cao2:=(cao1)/100;
v1:=v;
x:=(5*sio2+10*alo2);
y:=(5*c*sio2);
{ plot(x,y,red); }
if(v1>0.0010) and (v1<0.05) then
plot(x,y,red)
else if(v1>0.05) and (v1<0.08) then
plot(x,y,green)
else if(v1>0.08) and (V1<0.1) then
plot(x,y,cyan)
else if(v1>0.10) and (v1<0.12) then
plot(x,y,yellow)
else if(v1>0.12) and (v1<0.20)then
plot(x,y,white);
end;
begin
c:=sqrt(3);
graphdriver:=9;graphmode:=2;
initgraph(graphdriver,graphmode,'H:\TURBO4');
errorcode:=graphresult;
if errorcode <>grok then writeln('Fehler in Graphik')
else begin
for i:=1 to 10 do begin
z:=i;
draw(z/2,z*c/2,z,0,green);
end;
for i:=1 to 10 do begin
z:=i;
draw(10-z/2,z*c/2,10-z,0,green);
end;
for i:=0 to 9 do begin
z:=i;
draw(z/2,z*c/2,10-z/2,z*c/2,green);
end;
symbol(4.8,9,'SIO2',red);
symbol(-0.7,0,'CaO',red);
symbol(10.3,0,'Al2O3',red);
for i:=1 to 9 do begin
j:=10*i;
str(j,nu);
str(100-j,nu2);
symbol(i-0.15,-0.15,nu,lightgray);
symbol(10.15-i/2,c*i/2+0.05,nu,lightgray);
symbol(i/2-0.4,c*i/2+0.05,nu2,lightgray);
end;
{data input}
sio:=45.1;cao:=51.66;mgo:=2.24;alo:=2.06;cr:=0.018;v:=0.069;kim;
sio:=45.0;cao:=50.90;mgo:=1.35;alo:=1.09;cr:=0.026;v:=0.070;kim;
sio:=29.6;cao:=52.78;mgo:=1.14;alo:=21.72;cr:=0.01;v:=0.025;kim;
sio:=30.1;cao:=42.70;mgo:=0.69;alo:=11.5;cr:=0.015;v:=0.04;kim;
sio:=49.5;cao:=41.44;mgo:=3.22;alo:=20.02;cr:=0.013;v:=0.15;kim;
sio:=49.3;cao:=39.6;mgo:=1.94;alo:=10.6;cr:=0.019;v:=0.13;kim;
sio:=45.1;cao:=50.68;mgo:=2.42;alo:=3.04;cr:=0.005;v:=0.075;kim;
sio:=44.7;cao:=48.2;mgo:=1.46;alo:=1.61;cr:=0.01;v:=0.07;kim;
sio:=37.38;cao:=47.66;mgo:=5.99;alo:=15.09;cr:=0.031;v:=0.083;kim;
sio:=46.83;cao:=45.47;mgo:=6.81;alo:=15.19;cr:=0.007;v:=0.12;kim;
{sio:=41.00;cao:=49.56;mgo:=5.52;alo:=4.68;cr:=0.096;v:=0.1;kim;
sio:=38.00;cao:=43.4;mgo:=3.33;alo:=2.48;cr:=0.14;v:=0.16;kim;}
sio:=54.72;cao:=59.5;mgo:=2.52;alo:=1.91;cr:=0.001;v:=0.074;kim;
sio:=53.08;cao:=52.61;mgo:=2.55;alo:=1.76;cr:=0.001;v:=0.104;kim;
sio:=50.94;cao:=57.23;mgo:=2.82;alo:=1.53;cr:=0.011;v:=0.077;kim;
sio:=36.1;cao:=43.08;mgo:=2.27;alo:=24.22;cr:=0.038;v:=0.108;kim;
sio:=51.3;cao:=48.44;mgo:=2.97;alo:=1.89;cr:=0.033;v:=0.1;kim;
sio:=54.2;cao:=58.8;mgo:=2.37;alo:=1.55;cr:=0.06;v:=0.07;kim;
sio:=37.31;cao:=42.88;mgo:=2.42;alo:=20.82;cr:=0.026;v:=0.14;kim;
sio:=35.4;cao:=40.63;mgo:=1.46;alo:=11.02;cr:=0.039;v:=0.11;kim;
{sio:=39.2;cao:=50.96;mgo:=5.07;alo:=5.27;cr:=0.23;v:=0.18;kim;
sio:=37;cao:=48.4;mgo:=3.06;alo:=2.79;cr:=0.336;v:=0.12;kim;}
sio:=36.1;cao:=36.12;mgo:=0.45;alo:=2.44;cr:=0.027;v:=0.021;kim;
sio:=36.8;cao:=34.8;mgo:=0.27;alo:=1.29;cr:=0.039;v:=0.035;kim;
sio:=48.3;cao:=45.6;mgo:=1.79;alo:=1;cr:=0.055;v:=0.094;kim;
sio:=44.5;cao:=46.2;mgo:=2.07;alo:=17.00;cr:=0.01;v:=0.078;kim;
sio:=42;cao:=43;mgo:=1.25;alo:=9;cr:=0.015;v:=0.07;kim;
sio:=26.5;cao:=52.78;mgo:=0.48;alo:=21.91;cr:=0.026;v:=0.03;kim;
sio:=27;cao:=40.7;mgo:=0.29;alo:=11.6;cr:=0.038;v:=0.025;kim;
sio:=49.8;cao:=51.1;mgo:=2.64;alo:=1.74;cr:=0.013;v:=0.089;kim;
sio:=46.7;cao:=48.8;mgo:=1.59;alo:=0.92;cr:=0.029;v:=0.077;kim;
sio:=39.6;cao:=37.58;mgo:=2.52;alo:=28.71;cr:=0.005;v:=0.18;kim;
sio:=36.6;cao:=34.7;mgo:=1.52;alo:=15.2;cr:=0.015;v:=0.095;kim;
sio:=40.8;cao:=46.33;mgo:=8.29;alo:=13.56;cr:=0.042;v:=0.101;kim;
sio:=51.3;cao:=48.44;mgo:=2.97;alo:=1.89;cr:=0.038;v:=0.1;kim;
{sio:=30.48;cao:=41.165;mgo:=6.67;alo:=10.79;cr:=0.059;v:=0.132;kim;}
{sio:=40;cao:=40;alo:=12;mgo:=4.3;v:=0.12;kim;
sio:=20;cao:=65;alo:=15;mgo:=5;v:=0.12;kim;}
{data rechnung}
{tot:=(sio+cao+mgo+alo);
if (tot>=80 and (tot<=120) then kim;}
ch:=readkey;
if(ch='p') or (ch='P') then hardcopy;
closegraph;
end;
end.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
도스용 파스칼과 델파이가 호환이 안되는건지... 알려주세요..
그럼 수고하세요^^
참.. 그리고 실행되어서 나온 화면을 인쇄하는 방법도 알려주세요...
터보파스칼의 윈도우버전이 델파이이기 때문에 문법적으로야 호환이 되지만...
윈도우환경으로 오면서 너무나 많은 것이 바뀌어서... 위 소스를 델파이에서 바로 컴파일 할 수는 없겠네요...
델파이로 컨버팅한다면... 거의 대부분을 새로 짜야 된다고 생각하시면 될겁니다.
일단은 책을 보시고 윈도우 환경에서 Canvas(화면)에 선을 그리는 것부터 시작해보세요...