dal 2015 - visita n. 605
TpuFile
TpuFile

 

TpuFile

Le Procedure/Funzioni TPUFILE per TurboPASCAL (4.0÷7.0) sono delle primitive orientate alla gestione dei file. Le TPUFILE sono caratterizzate dalla iniziale X (eXtended).
Queste procedure vengono costruite tramite la unit TPUFILE.PAS integrata dal file interface TPUFILE.INT e dal file implementation TPUFILE.IMP.

  Sezioni Esterne in Pascal  Sezioni Esterne in Assembly
  • Nessuna


Documentazione


Function XAllPath(N: String): String;
Restituisce il Pathname completo della directory N che può essere in-
dicata anche in modo relativo alla directory corrente e includere an-
che il nome del drive.
Se la directory N non esiste o è specificata in modo errato viene re-
stituita una stringa nulla.
Es.: St:=XAllPath('C:')
restituisce la directory corrente del disco C:

Function XCreatF(T: Word; Var St): Word;
Crea il file DOS a lunghezza variabile di nome St associandogli
la word H (Handle).
T=0 Normal, T=1 ReadOnly, T=2 Hidden, T=3 ReadOnly+Hidden, T=4 System

Function XOpenF(T: Word; Var St): Word;
Apre il file DOS a lunghezza variabile di nome St associandogli
la word H (Handle).
T=2 ReadWrite, T=1 WriteOnly, T=0 ReadOnly

Function XSizeF(H: Word): LongInt;
Legge in L (LongInt) la lunghezza in byte del file DOS di Handle=H

Procedure XSeekF(H: Word; M: Byte; N: LongInt);
Sposta in avanti di N (LongInt) byte il puntatore del file DOS di
Handle=H, con modalità M:
0 - dall'inizio del file
1 - dalla posizione corrente
2 - dalla fine del file
Se N è negativo il puntatore si sposta a ritroso.

Procedure XReadF(H: Word; Var Bf; N: Word; Var C: Word);
Legge dal file DOS di Handle=H N byte ponendoli nel Buffer Bf.
C riporta il numero dei byte effettivamente letti.

Procedure XWriteF(H: Word; Var Bf; N: Word; Var C: Word);
Scrive sul file DOS di Handle=H N byte prelevandoli dal Buffer Bf.
C riporta il numero dei byte effettivamente scritti.

Procedure XCloseF(H: Word);
Chiude il file DOS individuato da H (Handle).

Function XCopyF(N1,N2: String): Boolean;
Copia il file di nome N1 in N2. Restituisce True se l'operazione va a
buon fine. Il file copiato riporta la stessa data e ora del sorgente.
Es.: B:=XCopyF('Myfile','Myfile.bak')
genera una copia di scorta di Myfile e restituisce B=True

Function XCompF(N1,N2: String): Byte;
Confronta i file di nome N1 ed N2. Restituisce 0 se l'operazione va a
buon fine ed i file sono identici byte a byte. Altrimenti restituisce:
1: se N1 non esiste
2: se N2 non esiste
3: se N1 ed N2 hanno dimensioni diverse
4: se N1 ed N2 non sono coincidenti
Es.: B:=XCompF('Myfile1','Myfile2')

Function XMoveF(P1,P2: String): Byte;
Sposta il file da path P1 a P2. Restituisce 0 se l'operazione va a
buon fine, altrimenti il codice d'errore. Sono ammessi i caratteri
jolly; gli spostamenti avvengono all'interno di uno stesso disco.
Se P2='' il file viene spostato nella directory corrente.
Codici di errore:
2,18: File non trovato
3: Path non trovato
5: Accesso negato
17: Drive diversi
altri: Errore su P1
Es.: B:=XMoveF('\WORK\Myfile','\LAB')
sposta il file Myfile dalla directory WORK alla directory LAB.

Function XTxtFilePos(Var F: Text): LongInt;
Restituisce la posizione corrente del file Testo F. E' l'analoga di
FilePos per gli altri tipi di file.

Procedure XTxtSeek(Var F: Text; SeekLoc: LongInt);
Posiziona la posizione corrente di un file Testo ad un componente
specificato. E' l'analoga di Seek per gli altri tipi di file.

Function XTxtFileSize(Var F: Text): LongInt;
Restituisce la dimensione corrente di un file Testo. E' l'analoga di
FileSize per gli altri tipi di file. Il file deve essere aperto.

Function XScrollF(N: String; C,M,X: Byte): Byte;
Visualizza il file-testo di nome N sul video, con attributi colore C.
L'operatore M, interpretato in binario è la modalità operativa:
00000000 modo normale
00000001 file testo crittografato con byte X
00000010 scroll di singola riga bloccato (verticale)
00000100 scroll orizzontale bloccato
00001000 selezione messaggio help
00010000 opzione Roll-Down ON se presente EOF=1Ah
E' possibile lo scorrimento del testo sia in verticale sia in orizzon-
tale (righe maggiori di 80 caratteri). La visualizzazione si conclude
col tasto ESC, mentre F1 visualizza un minihelp.
Restituisce 6 codici possibili:
0 operazione riuscita
1 file non trovato
2 modo video non ammesso (Modi Legali: 0,1,2,3,7)
3 memoria insufficiente
4 errore di chiusura file (Raro)
5 memoria non rilasciata (Raro)
34Utilizzare la direttiva di compilazione {$M}, ad esempio {$M 8192,0,0}
Es.: B:=XScrollF('MYFILE',$1E)
visualizza il file MYFILE in giallo su fondo blu.

Function XScanF(N: String; D: Char; L,V: Byte): Word;
Cerca conta e visualizza (se V>0) il pathname completo dei file di
nome N presenti sul drive D. La ricerca parte dalla Radice (Livello 0)
e si spinge fino alle sottodirectory di livello L (max 15).
La funzione restituisce il numero di file N trovati. N può contenere
anche caratteri Jolly.
Es.: W:=XScanF('MYFILE','C',4,0)
conta la presenza di MYFILE sul drive C: dalla radice fino
al 4° livello.

Function XDirF(Path,FOut: String; M: Byte; T: Word): Word;
Riporta su FOut i nomi delle voci della directory Path. La Fun-
zione restituisce il numero di voci trovate, incluso il nome del Volu-
me se presente.
Il parametro M consente di selezionare le modalita' di ricerca:
M = 6 Volume+Directory
M = 4 Volume .-+-+-+-+-+-+-+-.
M = 3 Directory+File Byte M |-|-|-|-|-|V|D|F|
M = 2 Directory `-+-+-+-+-+-+-+-'
M = 1 File
Se T=0 l'uscita avviene sul File FOut, con le seguenti eccezioni:
se FOut='1ECON' l'output avviene sul video
se FOut='1ELPT1' l'output avviene sulla stampante
Se T<>0 l'uscita avviene sulla matrice FOut di T elementi stringa di
lunghezza 47, utilizzare in questo caso il primo elemento di FOut
come parametro stringa (FOut[1]).
In caso di errore su FOut la funzione restituisce:
1E$FFFF in caso di nome file nullo
1E$FFFE in caso di array insufficiente
Es.: W:=XDirF('C:*.PAS','CON',3,0) uscita su video
Es.: W:=XDirF('C:*.PAS','LPT1',3,0) uscita su stampante
Es.: W:=XDirF('C:*.PAS','MYFILE',3,0) uscita su file MYFILE
Es.: W:=XDirF('C:*.PAS',M[1],3,20) uscita su array M

Function XWipeF(N: String): Boolean;
Azzera il file di nome N. Restituisce True se l'operazione va a buon
fine. Il file non viene rimosso dalla directory.
Es.: B:=XWipeF('Myfile');

Procedure XCriptoF(St1,St2: String; Shift: Byte);
Esegue la copia crittografata di N1 in N2. Shift è una costante di
inizializzazione da utilizzare anche con la procedura complementare
XDeCriptoF.
Es.: XCriptoF('MyText','Secret',37);

Procedure XDeCriptoF(St1,St2: String; Shift: Byte);
Complementare della XCriptoF.
Es.: XDeCriptoF('Secret','Clear',37);

Function XKillF(N: String): Boolean;
Rimuove dalla directory il file di nome N. Restituisce True se l'opera-
zione va a buon fine.
Es.: B:=KillF('Myfile');

Function XExist(FN: String): boolean;
Restituisce True se il file di nome St esiste, altrimenti False.
Es.: L:=XExist(St);

Procedure XCompressText(St1,St2: String; Var Perc: Real);
Comprime il file di nome St1 nel file St2, con il metodo RLE (vedi
XCompress in TpuStr). P è la percentuale di compressione.
Es.: XCompressText(St1,St2,P);

Procedure XDeCompressText(St1,St2: String; Var Perc: Real);
Complementare della XCompressText.
Es.: XDeCompressText(St1,St2,P);

Procedure XSetVerify(B: Boolean);
Attiva/Disattiva lo switch DOS VERIFY. Se VERIFY è attivo il DOS legge
i byte CRC (Cyclic Redundancy Check) dei dati appena scritti e verifi-
ca che essi siano corretti.
L'attivazione di VERIFY non causa, come comunemente si crede, una let-
tura dopo la scrittura dei dati su disco, ma solo una verifica dei by-
te di CRC.
I Dischi in Rete non supportano la funzione VERIFY.
Es.: XSetVerify(True);

Function XGetVerify: Boolean;
Riporta lo stato del flag VERIFY dopo una scrittura su disco.
Es.: B:=XGetVerify;

Function XRedirOut(N: String): Boolean;
Ridireziona l'Output Standard sul file di nome N.
Es.: B:=XRedirOut('NEWOUT');

Function XNormOut: Boolean;
Ripristina L'Output Standard;
Es.: B:=XNormOut;

Function XDiskVerify(NS,D,T,S,H: Byte): Byte;
Verifica direttamente tramite int 13h il disco del drive D, alla
traccia T, Settore S, Testina H, Numero di Settori NS.

Function XDiskVerifyCrp(NS,D,T,S,H: Byte): Byte;
Come XDiskVerify, ma con Int 13h Krp.

Function XDiskRead(Var BF; Var NSR,Err: Byte; NS,D,T,S,H: Byte): Byte;
Legge direttamente tramite int 13h il disco del drive D, alla
traccia T, Settore S, Testina H, Numero di Settori NS.
Restituisce la lettura nel Buffer BF, il numero di settori letti in
NSR, il codice di errore in Err.

Function XDiskReadCrp(Var BF; Var NSR,Err: Byte; NS,D,T,S,H: Byte): Byte;
Come XDiskRead, ma con Int 13h Krp.

Function XDiskWrite(Var BF; Var NSW,Err: Byte; NS,D,T,S,H: Byte): Byte;
Scrive direttamente tramite int 13h il Buffer BF su disco del drive
D, alla traccia T, Settore S, Testina H, Numero di Settori NS.
Restituisce il numero di settori scritti in NSW, il codice di errore
in Err.

Function XDiskWriteCrp(Var BF; Var NSW,Err: Byte; NS,D,T,S,H: Byte): Byte;
Come XDiskWrite, ma con Int 13h Krp.

Function XDiskReset(D: Byte): Byte;
Effettua Reset Drive D.

Function XDiskResetCrp(D: Byte): Byte;
Come XDiskReset, ma con Int 13h Krp.


Function XReadSector(Var BF; D,S,N: Word): Word;
Legge nel Buffer BF, tramite int 25h, N settori del disco del drive D
a partire dal settore S. Restituisce 0 se l'operazione va a buon fine
altrimenti la Word d'errore.

Function XWriteSector(Var BF; Drive,Sector,Number: Word): Word;
Scrive in Buffer BF, tramite int 26h, N settori dal disco del drive D
a partire dal settore S. Restituisce 0 se l'operazione va a buon fine
altrimenti la Word d'errore.

Function XGetDrive: String;
Restituisce una stringa contenente le lettere dei drive riconosciuti
dal DOS (Lettori, RamDisk, etc.).
Es.: St:=XGetDrive;


TpuBase
TpuBit
TpuCrono
TpuFile
TpuModeX
TpuStr



Molti, per pensare al futuro non godono l´attimo presente.
Anonimo

Valid CSS!
pagina generata in 0.001 secondi