Contributor: SWAG SUPPORT TEAM 
Unit MiscFunc;
{ MiscFunc version 1.0 Scott D. Ramsay }
{ This is my misc. Function Unit. Some of the Functions have }
{ nothing to do With games design but, my Units use it so ... }
{ MiscFunc.pas is free. Go crazy. }
{ I've been writing comments to these Units all night. Since you }
{ have the source to this, I'll let you figure out what each one }
{ does. }
Interface
Function strint(s:String):LongInt;
Function intstr(l:LongInt):String;
Function ups(s:String):String;
Function st(h:LongInt):String;
Function Compare(s1,s2:String):Boolean;
Function dtcmp(Var s1,s2;size:Word):Boolean;
Function lz(i,w:LongInt):String;
Function vl(h:String):LongInt;
Function spaces(h:Integer):String;
Function repstr(h:Integer;ch:Char):String;
Function anything(s:String):Boolean;
Function exist(f:String):Boolean;
Function errmsg(n:Integer):String;
Function turboerror(errorcode:Integer) : String;
Procedure funpad(Var s:String);
Procedure unpad(Var s:String);
Procedure munpad(Var s:String;b:Byte);
Function fpad(s:String;h:Integer):String;
Procedure pad(Var s:String;h:Integer);
Procedure fix(Var s:String;h:String);
Procedure fixh(Var s:String);
Function range(x,y,x1,y1,x2,y2:Integer) : Boolean;
Function between(x,x1,x2:Integer):Boolean;
Implementation
Function range(x,y,x1,y1,x2,y2:Integer) : Boolean;
{ returns True if (x,y) is in the rectangular region (x1,y1,x2,y2) }
begin
 range := ((x>=x1) and (x<=x2) and (y>=y1) and (y<=y2)); end; Procedure fix(Var s:String;h:String); begin if pos('.',s)=0 then s := s+h; end; Procedure fixh(Var s:String); Var d : Integer; begin For d := 1 to length(s) do if s[d]<#32 then s[d] := ' '; For d := length(s)+1 to 255 do s[d] := ' '; end; Function strint(s:String):LongInt; Var l : LongInt; begin move(s[1],l,sizeof(l)); strint := l; end; Function intstr(l:LongInt):String; Var s : String; begin move(l,s[1],sizeof(l)); s[0] := #4; intstr := s; end; Function ups(s:String):String; Var d : Integer; begin For d := 1 to length(s) do s[d] := upCase(s[d]); ups := s; end; Function st(h:LongInt):String; Var s : String; begin str(h,s); st := s; end; Function Compare(s1,s2:String):Boolean; Var d : Byte; e : Boolean; begin e := True; For d := 1 to length(s1) do if upCase(s1[d])upCase(s2[d])
 then e := False;
 Compare := e;
end;
Function dtcmp(Var s1,s2;size:Word):Boolean;
Var
 d : Word;
 e : Boolean;
begin
 e := True;
 d := size;
 While (d>0) and e do
 begin
 dec(d);
 e := (mem[seg(s1):ofs(s1)+d]=mem[seg(s2):ofs(s2)+d]);
 end;
 dtcmp := e;
end;
Function lz(i,w:LongInt):String;
Var
 d : LongInt;
 s : String;
begin
 str(i,s);
 For d := length(s) to w-1 do
 s := concat('0',s);
 lz := s;
end;
Function vl(h:String):LongInt;
Var
 d : LongInt;
 e : Integer;
begin
 val(h,d,e);
 vl := d;
end;
Function spaces(h:Integer):String;
Var
 s : String;
begin
 s := '';
 While h>0 do
 begin
 dec(h);
 s := concat(s,' ');
 end;
 spaces := s;
end;
Function repstr(h:Integer;ch:Char):String;
Var
 s : String;
begin
 s := '';
 While h>0 do
 begin
 dec(h);
 s := s+ch;
 end;
 repstr := s;
end;
Function anything(s:String):Boolean;
Var
 d : Integer;
 h : Boolean;
begin
 if length(s)=0
 then
 begin
 anything := False;
 Exit;
 end;
 h := False;
 For d := 1 to length(s) do
 if s[d]>#32
 then h := True;
 anything := h;
end;
Function exist(f:String):Boolean;
Var
 fil : File;
begin
 if f=''
 then
 begin
 exist := False;
 Exit;
 end;
 assign(fil,f);
 {$i- }
 reset(fil);
 close(fil);
 {$i+ }
 exist := (ioresult=0);
end;
Function errmsg(n:Integer):String;
begin
 Case n of
 -1 : errmsg := '';
 -2 : errmsg := 'Error reading data File';
 -3 : errmsg := '';
 -4 : errmsg := 'equal current data File name';
 150 : errmsg := 'Disk is Write protected';
 152 : errmsg := 'Drive is not ready';
 156 : errmsg := 'Disk seek error';
 158 : errmsg := 'Sector not found';
 159 : errmsg := 'Out of Paper';
 160 : errmsg := 'Error writing to Printer';
 1000 : errmsg := 'Record too large';
 1001 : errmsg := 'Record too small';
 1002 : errmsg := 'Key too large';
 1003 : errmsg := 'Record size mismatch';
 1004 : errmsg := 'Key size mismatch';
 1005 : errmsg := 'Memory overflow';
 else errmsg := 'Error result #'+st(n);
 end;
end;
Function turboerror(errorcode:Integer) : String;
begin
 Case errorcode of
 1: turboerror := 'Invalid Dos Function code';
 2: turboerror := 'File not found';
 3: turboerror := 'Path not found';
 4: turboerror := 'too many open Files';
 5: turboerror := 'File access denied';
 6: turboerror := 'Invalid File handle';
 8: turboerror := 'not enough memory';
 12: turboerror := 'Invalid File access code';
 15: turboerror := 'Invalid drive number';
 16: turboerror := 'Cannot remove current directory';
 17: turboerror := 'Cannot rename across drives';
 100: turboerror := 'Disk read error';
 101: turboerror := 'Disk Write error';
 102: turboerror := 'File not assigned';
 103: turboerror := 'File not open';
 104: turboerror := 'File not open For input';
 105: turboerror := 'File not open For output';
 106: turboerror := 'Invalid numeric Format';
 200: turboerror := 'division by zero';
 201: turboerror := 'Range check error';
 202: turboerror := 'Stack overflow error';
 203: turboerror := 'Heap overflow error';
 204: turboerror := 'Invalid Pointer operation';
 else turboerror := errmsg(errorcode);
 end;
end;
Procedure funpad(Var s:String);
begin
 While s[1]=' ' do
 delete(s,1,1);
end;
Procedure unpad(Var s:String);
begin
 While (length(s)>0) and (s[length(s)]<=' ') do delete(s,length(s),1); end; Procedure munpad(Var s:String;b:Byte); begin s[0] := Char(b); While (length(s)>0) and (s[length(s)]<=' ') do delete(s,length(s),1); end; Function fpad(s:String;h:Integer):String; begin While length(s)=x1) and (x<=x2));
end;
end. 

AltStyle によって変換されたページ (->オリジナル) /