Unit Generaal; { This software has been designed and is CopyLefted by Han de Bruijn (===) @-O^O-@ #/_\# ### All I ask is to be credited when it is appropriate. General Routines ================ } INTERFACE Uses ExtCtrls, Graphics, Types, SysUtils; type punt = record x,y : double; end; punten = array of punt; integers = array of integer; Nuttig = class private GeenLog : boolean; genoemd : string; eerder : integer; public constructor Create; procedure LogFile(naam : string); { Name of log / debug file } procedure Schijf(bericht : string); { Log / debug Message } procedure TijdMeting(afdruk : string); { Time measurement } end; function let(x,y : double) : punt; function Det(p,q : punt) : double; function Letterlijk(nr : integer) : string; IMPLEMENTATION function Letterlijk(nr : integer) : string; { Natural to String } const cijfer : string = '0123456789'; var no,t,tel,wel : integer; vgl : string; c : char; begin no := nr; tel := 0; { Analysis } vgl := ''; while no > 0 do begin c := cijfer[(no mod 10) + 1]; vgl := vgl + c; no := no div 10; tel := tel + 1; end; wel := tel div 2; for t := 0 to wel-1 do begin c := vgl[t+1]; vgl[t+1] := vgl[tel-t]; vgl[tel-t] := c; end; if vgl = '' then vgl := '0'; Letterlijk := vgl; end; constructor Nuttig.Create; { Initialize } begin GeenLog := true; genoemd := ''; eerder := 0; end; procedure Nuttig.LogFile; { Name of LogFile } begin genoemd := naam; GeenLog := false; eerder := 0; end; procedure Nuttig.Schijf; { (Debugging and) Logging } var bug : text; eerst : boolean; begin if GeenLog then Writeln(bericht); if GeenLog then Exit; eerst := not FileExists(genoemd); AssignFile(bug,genoemd); if eerst then Rewrite(bug) else Append(bug); Writeln(bug, bericht); Closefile(bug); end; procedure Nuttig.TijdMeting; { StopWatch } var heden : integer; begin if afdruk = '' then begin eerder := DateTimeToTimeStamp(Now).Time; Exit; end; heden := DateTimeToTimeStamp(Now).Time; Schijf(afdruk+' = '+IntToStr(heden-eerder)+' ms'); end; function let(x,y : double) : punt; var h : punt; begin h.x := x; h.y := y; let := h; end; function Det(p,q : punt) : double; begin Det := (p.x*q.y-p.y*q.x); end; END.