15.5Funções com Ordinais
Pred (variável)
Retorna o predecessor do argumento passado
Succ (variável)
Retorna o sucessor do argumento passado
15.6Unit DOS
DOSVERSION : Word ;
Retona a versão do sistema. A parte baixa retorna a versão e a parte baixa a atualização
DISKFREE (drive : Byte) : Longint;
Retorna o número de bytes livres no drive.
DISKSIZE (drive : Byte ) : Longint ;
Retorna o total de bytes da unidade de disco
ENVCOUNT : Integer ;
Retorna o número de strings contidas no ambiente DOS
ENVSTR (indice : Integer ) : String ;
Retorna a string do ambiente DOS correspondente ao índice.
GETENV (ambiente : String ) : String ;
Retorna o conteúdo da string passada como parâmetro relativa ao ambiente DOS.
EXEC (caminho, linhadecomando : String );
Executa um comando passado como parâmetro. Deve ser usado em conjunto com SWAPVECTORS.
Exemplo
Program ExecutaProgrDos;
{$M $4000,0,0 } { 16K stack, no heap }
uses Dos;
var
ProgramName, CmdLine: string;
begin
Write('Programa para executar: ');
ReadLn(ProgramName);
Write('Argumento a ser passado para ',ProgramName, ': ');
ReadLn(CmdLine);
WriteLn('Executando...');
SwapVectors;
Exec(ProgramName, CmdLine);
SwapVectors;
WriteLn('...voltando da Execu‡„o');
if DosError <> 0 then { Error? }
WriteLn('DOS error #', DosError)
else
WriteLn('Exec com sucesso. ',
'Codigo de Saida do Processo de execução = ',
DosExitCode);
end.
DOSEXITCODE : Word ;
Retorna o código de saída de um processo
FEXPAND ( path: PATHSTR) : PATHSTR;
Retorna uma string contendo o nome de programa passado como parâmetro em sua totalidade.
FSEARCH ( path: PATHSTR; lista : String ) : PATHSTR;
Procura um determinado arquivo em uma lista de diretórios
FSPLIT (path: PATHSTR; VAR dir: DIRSTR; VAR nome: NAMESTR; VAR ext: EXTSTR);
Explode o nome do arquivo passando como parâmetro, em três partes o diretório, o nome do arquivo e a extensão.
FINDFIRST (caminho : String ; atributo : Word ; VAR s : SEARCHREC);
Procura um determinado arquivo, especificando seu nome e seu atributo
FINDNEXT (VAR s : SEARCHREC);
Devolve a próxima entrada, após FINDFIRST.
GETCBREAK (VAR break : Boolean);
Retorna o estado da checagem de CTRL-BREAK.
SETCBREAK (break : Boolean);
Altera o estado da checagem de CTRL-BREAK.
GETVERIFY (VAR v: Boolean);
Retorna o estado do flag de verificação do Sistema Operacional
SETVERIFY (v : Boolean);
Altera o estado do flag de verificação do Sistema Operacional
GETDATE (VAR ano, mes, dia, dia_semana : Word );
Retorna a data corrente do sistema operacional
SETDATE (ano, mes, dia : Word );
Altera a data do sistema operacional
GETTIME (var hora, min, seg, cen : Word );
Retorna a hora do sistema operacional
SETTIME (hora, min, seg, cen : Word );
Altera a hora do sistema operacional
PACKTIME (VAR data : DATETIME; VAR ftime : Longint );
Compacta data e hora em 4 bytes. A hora e a data deverão estar em um registro DATETIME predefinido na Unit DOS:
DATETIME = record
year, month, day, hour, min, sec : Word ;
END;
UNPACKTIME (ftime : Longint ; VAR data :DATETIME);
Descompacta um valor de 4 bytes para o registro DATETIME.
GETFTIME (VAR arquivo, VAR dh : Longint );
Retorna a hora e a data da última atualização de um arquivo.
SETFTIME (VAR arquivo, VAR dh : Longint );
Estabelece uma nova data e hora de última gravação em um arquivo.
GETFATTR (arquivo; VAR atrib : Word );
Retorna o atributo de um determinado arquivo:
READONLY = $01; (somente leitura)
HIDDEN = $02; (escondido)
SYSFILE = $04; (arquivo de sistema)
VOLUMEID = $08; (nome de volume)
DIRECTORY = $10; (diretório)
ARQUIVE = $20; (arquivo)
ANYFILE = $3F; (sem definição)
SETFATTR (VAR arquivo; atrib : Word );
Estabelece um novo atributo para um arquivo
GETINTVEC (nuint : Byte ; VAR vetor : pointer);
Retorna o endereço de memória de um vetor de interrupção específico
SETINTVEC (nuint : Byte ; VAR vetor : pointer);
Determina um novo endereço de memória de um vetor de interrupção específico
SWAPVECTORS ;
Permite que sejam salvos todos os vetores de interrupção do sistema.
INTR (intnro : Byte ; VAR reg : REGISTERS);
Permite executar uma interrupção do sistema operacional. Deve-se passar como parâmetro o número da interrupção e um registro dos registradores, predefinido na Unid DOS:
REGISTERS = RECORD
case integer of
0: (AX, BX, CX, DX, BP, SI, DI, DS, ES, FLAGS : Word );
1: (AL, AH, BL, BH, CL, CH, DL, DH : Byte );
END;
MSDOS (VAR reg : REGISTERS);
Executa uma chamada na interrupção 21H do sistema operacional.
KEEP (saida : Word );
Termina um programa e mantém residente na memória.
Exemplo de um programa que causa um click cada vez que uma tecla é pressionada:
Program ExemploKeep;
{$M $800,0,0 } { 2K stack, no heap }
uses Crt, Dos;
var
KbdIntVec : Procedure;
{$F+}
procedure Keyclick; interrupt;
begin
if Port[$60] < $80 then
begin
Sound(5000);
Delay(1);
Nosound;
end;
inline ($9C);
KbdIntVec;
end;
{$F-}
begin
GetIntVec($9,@KbdIntVec);
SetIntVec($9,Addr(Keyclick));
Keep(0);
end.
|