unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; OpenDialog1: TOpenDialog; OpenDialog2: TOpenDialog; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; type gate = record typ: string; x, y, w, h: integer; input: array [1..10] of string; output: string; end; type input = record id: string; x, y, w, h: integer; end; type output = record id: string; x, y, w, h: integer; end; type stav= (ctuVstupy, ctuHradla, ctuVystupy); var Form1: TForm1; popisS, vstupS, vystupS: TextFile; radky: array [1..1000] of string; i, j, typP, idP, xP, yP, wP, hP, kP: word; id, typ, x, y, w, h, ids: string; brany: array [1..100] of gate; vstupy: array [1..100] of input; vystupy: array [1..100] of output; branyC, vstupyC, vystupyC: byte; stavCteni: stav; velkaPlocha: boolean = false; barva: TColor; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Zadej soubor s popisem hradlové sítě.'); if OpenDialog1.Execute then begin AssignFile(popisS, OpenDialog1.FileName); Reset(popisS); i:=0; branyC:=1; vstupyC:=1; vystupyC:=1; stavCteni:=ctuVstupy; repeat Readln(popisS, radky[i]); typP:=ansipos('type=', radky[i]); xP:=ansipos('x=', radky[i]); yP:=ansipos('y=', radky[i]); wP:=ansipos('w=', radky[i]); hP:=ansipos('h=', radky[i]); idP:=ansipos('id=', radky[i]); kP:=ansipos('>', radky[i]); if (idP <> 0) and (stavCteni=ctuVstupy) then begin ids:=''; for j:=idP+4 to xP-3 do ids:=ids+radky[i][j]; vstupy[vstupyC].id:=ids; x:=''; for j:=xP+3 to yP-3 do x:=x+radky[i][j]; vstupy[vstupyC].x:=StrToInt(x); y:=''; //čtení vstupů for j:=yP+3 to wP-3 do y:=y+radky[i][j]; vstupy[vstupyC].y:=StrToInt(y); w:=''; for j:=wP+3 to hP-3 do w:=w+radky[i][j]; vstupy[vstupyC].w:=StrToInt(w); h:=''; for j:=hP+3 to kP-3 do h:=h+radky[i][j]; vstupy[vstupyC].h:=StrToInt(h); vstupyC:=vstupyC+1; end; if typP <> 0 then begin stavCteni:=ctuHradla; typ:=''; for j:=typP+6 to xP-3 do typ:=typ+radky[i][j]; brany[branyC].typ:=typ; x:=''; for j:=xP+3 to yP-3 do x:=x+radky[i][j]; brany[branyC].x:=StrToInt(x); y:=''; //čtení hradel for j:=yP+3 to wP-3 do y:=y+radky[i][j]; brany[branyC].y:=StrToInt(y); w:=''; for j:=wP+3 to hP-3 do w:=w+radky[i][j]; brany[branyC].w:=StrToInt(w); h:=''; for j:=hP+3 to kP-2 do h:=h+radky[i][j]; brany[branyC].h:=StrToInt(h); branyC:=branyC+1; end; if (ansipos('', radky[i-1])<>0) and (ansipos('output', radky[i])<>0) then stavCteni:=ctuVystupy; if (idP <> 0) and (stavCteni=ctuVystupy) then begin ids:=''; for j:=idP+4 to xP-3 do ids:=ids+radky[i][j]; vystupy[vystupyC].id:=ids; x:=''; for j:=xP+3 to yP-3 do x:=x+radky[i][j]; vystupy[vystupyC].x:=StrToInt(x); y:=''; //čtení výstupů for j:=yP+3 to wP-3 do y:=y+radky[i][j]; vystupy[vystupyC].y:=StrToInt(y); w:=''; for j:=wP+3 to hP-3 do w:=w+radky[i][j]; vystupy[vystupyC].w:=StrToInt(w); h:=''; for j:=hP+3 to kP-3 do h:=h+radky[i][j]; vystupy[vystupyC].h:=StrToInt(h); vystupyC:=vystupyC+1; end; i:=i+1; until(eof(popisS)); for i:=1 to vstupyC-1 do begin Canvas.MoveTo(vstupy[i].x, vstupy[i].y); Canvas.LineTo(vstupy[i].x+vstupy[i].h, vstupy[i].y); Canvas.LineTo(vstupy[i].x+vstupy[i].h, vstupy[i].y+vstupy[i].w); Canvas.LineTo(vstupy[i].x, vstupy[i].y+vstupy[i].w); Canvas.LineTo(vstupy[i].x, vstupy[i].y); end; for i:=1 to branyC-1 do begin //vykresení popisu Canvas.MoveTo(brany[i].x, brany[i].y); Canvas.LineTo(brany[i].x+brany[i].h, brany[i].y); Canvas.LineTo(brany[i].x+brany[i].h, brany[i].y+brany[i].w); Canvas.LineTo(brany[i].x, brany[i].y+brany[i].w); Canvas.LineTo(brany[i].x, brany[i].y); end; for i:=1 to vystupyC-1 do begin Canvas.MoveTo(vystupy[i].x, vystupy[i].y); Canvas.LineTo(vystupy[i].x+vystupy[i].h, vystupy[i].y); Canvas.LineTo(vystupy[i].x+vystupy[i].h, vystupy[i].y+vstupy[i].w); Canvas.LineTo(vystupy[i].x, vystupy[i].y+vystupy[i].w); Canvas.LineTo(vystupy[i].x, vystupy[i].y); end; ShowMessage('Zadej soubor se vstupními daty.'); if OpenDialog2.Execute then begin AssignFile(vstupS, OpenDialog2.FileName); //čtení vstupu end; for i:=1 to vstupyC-1 do begin Canvas.MoveTo(vstupy[i].x, vstupy[i].y); Canvas.LineTo(vstupy[i].x+vstupy[i].h, vstupy[i].y); Canvas.LineTo(vstupy[i].x+vstupy[i].h, vstupy[i].y+vstupy[i].w); Canvas.LineTo(vstupy[i].x, vstupy[i].y+vstupy[i].w); Canvas.LineTo(vstupy[i].x, vstupy[i].y); end; for i:=1 to branyC-1 do begin Canvas.MoveTo(brany[i].x, brany[i].y); //opět vykresení popisu po překrytí kresbičky OpenDialogem Canvas.LineTo(brany[i].x+brany[i].h, brany[i].y); Canvas.LineTo(brany[i].x+brany[i].h, brany[i].y+brany[i].w); Canvas.LineTo(brany[i].x, brany[i].y+brany[i].w); Canvas.LineTo(brany[i].x, brany[i].y); end; for i:=1 to vystupyC-1 do begin Canvas.MoveTo(vystupy[i].x, vystupy[i].y); Canvas.LineTo(vystupy[i].x+vystupy[i].h, vystupy[i].y); Canvas.LineTo(vystupy[i].x+vystupy[i].h, vystupy[i].y+vstupy[i].w); Canvas.LineTo(vystupy[i].x, vystupy[i].y+vystupy[i].w); Canvas.LineTo(vystupy[i].x, vystupy[i].y); end; end; end; procedure TForm1.Button2Click(Sender: TObject); begin if velkaPlocha then begin Form1.Width:=147; Form1.Height:=445; velkaPlocha:=false; Button2.Caption:='>>>'; end else begin Form1.Width:=800; Form1.Height:=600; velkaPlocha:=true; Button2.Caption:='<<<'; end; end; procedure TForm1.Button3Click(Sender: TObject); begin Memo1.Lines.Add('Tento program funguje'); sleep(600); Memo1.Lines.Add('značně omezeně.'); sleep(600); Memo1.Lines.Add('Můžete načíst soubor,'); sleep(600); Memo1.Lines.Add('načte údaje a zobrazí'); sleep(600); Memo1.Lines.Add('vstupy/hradla/výstupy'); sleep(600); Memo1.Lines.Add('jako čtverce'); sleep(600); Memo1.Lines.Add('nebo odélníky.'); sleep(600); Memo1.Lines.Add('Možno tvětšit plochu.'); sleep(600); Memo1.Lines.Add('(nutné pro vykreslení)'); sleep(1000); Memo1.Lines[0]:=''; sleep(600); Memo1.Lines[1]:=''; sleep(600); Memo1.Lines[2]:=''; sleep(600); Memo1.Lines[3]:=''; sleep(600); Memo1.Lines[4]:=''; sleep(600); Memo1.Lines[5]:=''; sleep(600); Memo1.Lines[6]:=''; sleep(600); Memo1.Lines[7]:=''; sleep(600); Memo1.Lines[8]:=''; sleep(600); end; procedure TForm1.Button4Click(Sender: TObject); begin barva:=Form1.Color; Randomize; while (1=1) do begin if Random(4)=0 then Form1.Color:=clred; if Random(4)=0 then Form1.Color:=clblue; if Random(4)=0 then Form1.Color:=clgreen; if Random(4)=0 then Form1.Color:=clyellow; if Random(4)=0 then Form1.Left:=Form1.Left+5; if Random(4)=1 then Form1.Left:=Form1.Left-5; if Random(4)=2 then Form1.Top:=Form1.Left+5; if Random(4)=3 then Form1.Top:=Form1.Left-5; if Random(1000)=0 then ShowMessage('Well done'); end; end; end.