home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DP Tool Club 31
/
CDASC_31_1996_juillet_aout.iso
/
internet
/
rnr214.zip
/
TP4EXEC.PAS
< prev
Wrap
Pascal/Delphi Source File
|
1994-11-20
|
3KB
|
189 lines
{ stuff tp4 needs to work with exec }
unit tp4exec;
interface
uses dos;
type
pathstr=string[79];
dirstr=string[67];
namestr=string[8];
extstr=string[4];
function envcount: integer;
function envstr(index: integer): string;
function getenv(name: string): string;
procedure fsplit(path: pathstr; var dir: dirstr; var name: namestr; var ext: extstr);
procedure swapvectors;
implementation
function envcount;
var
result: integer;
i: integer;
envseg: word;
envread: integer;
firstb: byte;
thisb: byte;
begin
result := 0;
envseg := memw[prefixseg:$2c];
envread := 0;
repeat
firstb := mem[envseg:envread];
if firstb>0 then
begin
inc(result);
repeat
thisb := mem[envseg:envread];
inc(envread);
until thisb=ord('=');
repeat
thisb := mem[envseg:envread];
inc(envread);
until thisb=0;
end;
until (firstb=0);
envcount := result;
end;
function envstr;
var
result: string;
i: integer;
envseg: word;
envread: integer;
firstb: byte;
thisb: byte;
varname: string;
vardata: string;
done: boolean;
seenvars: integer;
begin
result := '';
envseg := memw[prefixseg:$2c];
envread := 0;
seenvars := 0;
repeat
firstb := mem[envseg:envread];
if firstb>0 then
begin
inc(seenvars);
varname := '';
repeat
thisb := mem[envseg:envread];
inc(envread);
if thisb<>ord('=') then
varname := varname+chr(thisb);
until thisb=ord('=');
vardata := '';
repeat
thisb := mem[envseg:envread];
inc(envread);
if thisb>0 then
vardata := vardata+chr(thisb);
until thisb=0;
done := (seenvars=index);
if done then
result := varname+'='+vardata;
end;
until (firstb=0) or done;
envstr := result;
end;
function getenv;
var
result: string;
i: integer;
envseg: word;
envread: integer;
firstb: byte;
thisb: byte;
varname: string;
vardata: string;
done: boolean;
begin
result := '';
envseg := memw[prefixseg:$2c];
envread := 0;
repeat
firstb := mem[envseg:envread];
if firstb>0 then
begin
varname := '';
repeat
thisb := mem[envseg:envread];
inc(envread);
if thisb<>ord('=') then
varname := varname+chr(thisb);
until thisb=ord('=');
vardata := '';
repeat
thisb := mem[envseg:envread];
inc(envread);
if thisb>0 then
vardata := vardata+chr(thisb);
until thisb=0;
done := (varname=name);
if done then
result := vardata;
end;
until (firstb=0) or done;
getenv := result;
end;
procedure fsplit;
var
i: integer;
done: boolean;
endofdir: integer;
begin
dir := '';
name := path;
for i := 1 to length(path) do
if (path[i]=':') or (path[i]='/') or (path[i]='\') then
begin
dir := copy(path,1,i);
name := copy(path,i+1,255);
end;
i := pos('.',name);
if i=0 then
i := length(name)+1;
ext := copy(name,i,255);
name := copy(name,1,i-1);
end;
procedure swapvectors;
begin
end;
begin
end.