home *** CD-ROM | disk | FTP | other *** search
- (*
- ──────────────────────
- String Tools unit v1.1
- ──────────────────────
- (c)1994 Rsc Research
-
- Write me at: or on Compuserve
- ──────────── ────────────────
- Cédric Rime 100340,2736
- Dixence 21
- 1950 Sion
- Switzerland
-
-
- This program is entered as Shareware.
- If you find it useful, a small donation would be appreciated.(then i can take some English lessons!!!)
-
- Feel free to incorporate the code into your own programs.
-
- *)
-
-
- UNIT tools;
- INTERFACE
- USES crt,dos;
-
- CONST KeyUP=72;
- KeyDOWN=80;
- KeyRIGHT=77;
- KeyLEFT=75;
- KeyHome=71;
- KeyEnd=79;
- KeyPGup=73;
- KeyPGDown=81;
- KeyEsc=27;
- KeyEnter=13;
- KeyBackSpace=8;
- KeyTab=9;
-
- FUNCTION rval(st:STRING):real;
- FUNCTION rstr(r:real):STRING;
- FUNCTION ival(st:STRING):INTEGER;
- FUNCTION istr(r:INTEGER):STRING;
- FUNCTION toupper(st:STRING):STRING;
- FUNCTION tolower(st:STRING):STRING;
- FUNCTION from(st:STRING;x:BYTE):STRING;
- FUNCTION right(st:STRING;x:BYTE):STRING;
- FUNCTION left(st:STRING;x:BYTE):STRING;
- FUNCTION spc(w:BYTE):STRING;
- FUNCTION xcopy(nom,nom2:STRING):BOOLEAN;
- FUNCTION xerase(nom:STRING):BOOLEAN;
- FUNCTION xrename(nom,nom2:STRING):BOOLEAN;
- FUNCTION exist(nom:STRING):BOOLEAN;
- FUNCTION stringtonumber(y:STRING):real;
- FUNCTION Hex2Int(h:STRING):LongInt;
-
- IMPLEMENTATION
-
- FUNCTION Hex2Int(h:STRING):LongInt;
- CONST v='0123456789ABCDEF';
- VAR q:INTEGER;
- m:LongInt;
- res:LongInt;
- s:STRING;
- BEGIN
- s:=toupper(h);
- m:=1;res:=0;
- FOR q:=Length(s) DOWNTO 1 DO
- BEGIN
- res:=res+(Pos(Copy(s,q,1),v)-1)*m;
- m:=m SHL 4;
- END;
- hex2int:=res;
- END;
-
- FUNCTION StringToNumber(y:STRING):real;
- VAR q,w,e:INTEGER;
- r:real;
- a,s:STRING;
- l:BYTE;
- CONST Inum='0123456789';
-
- PROCEDURE clean1;
- VAR q:INTEGER;
- BEGIN
- FOR q:=1 TO l DO IF (Pos(Copy(y,q,1),inum)>0) AND (Pos(Copy(y,q,1),inum)<11) THEN a:=a+Copy(y,q,1);
- END;
-
- PROCEDURE clean2;
- VAR q,w:INTEGER;
- BEGIN
- w:=0;
- FOR q:=1 TO l DO IF (Pos(Copy(y,q,1),inum)>0) AND (Pos(Copy(y,q,1),inum)<11) THEN a:=a+Copy(y,q,1)
- ELSE IF (Copy(y,q,1)='.') AND (w=0) THEN BEGIN a:=a+Copy(y,q,1);w:=1;END;
- END;
-
- BEGIN
- l:=Length(y);IF l<1 THEN BEGIN stringtonumber:=0;EXIT;END;
- a:='';
- IF (Pos('.',y)>0) AND (Pos('.',y)<=l) THEN
- BEGIN {float number}
- clean2;
- END ELSE
- BEGIN {integer number}
- clean1;
- END;
- IF a='.' THEN a:='0';
- IF Copy(a,Length(a),1)='.' THEN a:=Copy(a,1,Length(a)-1);
- Val(a,r,q);
- stringtonumber:=r;
- END;
- FUNCTION rval(st:STRING):real;
- VAR d:INTEGER;
- f:real;
- BEGIN
- Val(st,f,d);
- rval:=f;
- END;
-
- FUNCTION rstr(r:real):STRING;
- VAR d:INTEGER;
- f:STRING;
- BEGIN
- Str(r,f);
- rstr:=f;
- END;
-
- FUNCTION ival(st:STRING):INTEGER;
- VAR d:INTEGER;
- f:INTEGER;
- BEGIN
- Val(st,f,d);
- ival:=f;
- END;
-
- FUNCTION istr(r:INTEGER):STRING;
- VAR d:INTEGER;
- f:STRING;
- BEGIN
- Str(r,f);
- istr:=f;
- END;
-
- FUNCTION toupper(st:STRING):STRING;
- VAR q:BYTE;
- s:STRING;
- dn,up:STRING;
- BEGIN
- DN:='abcdefghijklmnopqrstuvwxyzèéà';
- up:='ABCDEFGHIJKLMNOPQRSTUVWXYZEEA';
- s:='';
- FOR q:=1 TO Length(st) DO IF Pos(st[q],dn)<>0 THEN s:=s+up[Pos(st[q],dn)] ELSE s:=s+st[q];
- toupper:=s;
- END;
-
- FUNCTION tolower(st:STRING):STRING;
- VAR q:BYTE;
- s:STRING;
- up,dn:STRING;
- BEGIN
- DN:='abcdefghijklmnopqrstuvwxyzèéà';
- up:='ABCDEFGHIJKLMNOPQRSTUVWXYZEEA';
- s:='';
- FOR q:=1 TO Length(st) DO IF Pos(st[q],up)<>0 THEN s:=s+dn[Pos(st[q],up)] ELSE s:=s+st[q];
- tolower:=s;
- END;
-
- FUNCTION from(st:STRING;x:BYTE):STRING;
- BEGIN
- from:=Copy(st,x,Length(st)-x);
- END;
-
- FUNCTION right(st:STRING;x:BYTE):STRING;
- BEGIN
- right:=Copy(st,Length(st)-x,x);
- END;
-
- FUNCTION left(st:STRING;x:BYTE):STRING;
- BEGIN
- left:=Copy(st,1,x);
- END;
-
- FUNCTION spc(w:BYTE):STRING;
- VAR qqq:STRING;
- q:BYTE;
- BEGIN
- qqq:='';
- FOR q:=1 TO w DO qqq:=qqq+' ';
- spc:=qqq;
- END;
- FUNCTION xerase(nom:STRING):BOOLEAN;
- VAR f:FILE;
- BEGIN
- xerase:=TRUE;
- Assign(f,nom);
- {$i-}Rewrite(f,1);{$i+} IF IOResult<>0 THEN xerase:=FALSE;
- Close(f);
- Erase(f);
- END;
- FUNCTION xrename(nom,nom2:STRING):BOOLEAN;
- VAR f:FILE;
- BEGIN
- xrename:=TRUE;
- Assign(f,nom);
- {$i-}Reset(f,1);{$i+} IF IOResult<>0 THEN xrename:=FALSE;
- Close(f);
- Rename(f,nom2);
- END;
- FUNCTION xcopy(nom,nom2:STRING):BOOLEAN;
- VAR f,f1:FILE;
- buff:ARRAY[0..4096] OF BYTE;
- lng:LongInt;
- PROCEDURE one;
- BEGIN
- BlockRead(f,buff,lng);
- BlockWrite(f1,buff,lng);
- lng:=0;
- END;
- PROCEDURE two;
- BEGIN
- BlockRead(f,buff,4095);
- BlockWrite(f1,buff,4095);
- lng:=lng-4095;
- END;
-
- BEGIN
- xcopy:=TRUE;
- Assign(f,nom);
- {$i-}Reset(f,1);{$i+} IF IOResult<>0 THEN xcopy:=FALSE;
- Assign(f1,nom2);
- {$i-}Reset(f,1);{$i+} IF IOResult<>0 THEN xcopy:=FALSE;
- lng:=FileSize(f);
- REPEAT
- IF lng<4095 THEN one ELSE two;
- UNTIL lng<1;
- Close(f);
- Close(f1);
- END;
-
- FUNCTION exist(nom:STRING):BOOLEAN;
- VAR tttx:FILE;
- BEGIN
- Assign(tttx,nom);
- {$i-}Reset(tttx,1);{$i+}
- exist:=TRUE;
- IF IOResult<>0 THEN exist:=FALSE;
- END;
- END.
-