Developpez.com - Pascal
X

Choisissez d'abord la catégorieensuite la rubrique :

 

CHAPITRE XVII : Commandes systèmes

Par Hugo ETIEVANT

Tous comme sous Dos ou Windows, il est quelquefois nécessaire pour certains types de programmes (cryptage, installation, setup, etc.) de créer des répertoires, de dépacer des fichiers... Turbo Pascal 7.0 propose un certains nombre de commandes permettant ces manipulations. Certaines d'entre elles seront discutées au cours de ce chapitre. Les instructions suivantes nécessitent l'unité Dos

  1. Répertoires et lecteurs
  2. Environnement MS-DOS
  3. Fichiers
  4. Mémoire vive
 

1. Répertoires et lecteurs

MkDir ( s ) ;
Procédure qui crée le sous-répertoire s qui est une variable de type string dans le lecteur et repertoire courant.

RmDir ( s ) ;
Procédure qui supprime le sous-répertoire s qui est une variable de type string dans le lecteur et repertoire courant.

ChDir ( s ) ;
Procédure qui change de répertoire courant pour aller dans le répertoire s avec s une variable string.

GetDir ( b, s ) ;
Procédure qui renvoit le répertoire courant dans la variable s de type string du lecteur lui-même spécifié en byte.

Code des lecteurs
ValeurLecteur
0courant
1A:
2B:
3C:

Program exemple16 ;
Uses dos ;
Var s,r,t:String ;
    i:integer ;
BEGIN

GetDir(0,s) ;
Writeln('
Lecteur et répertoire courant: ',s) ;
{$I-}
Write('
Aller dans quel répertoire ? -> ') ;
ReadLn(r) ;
For i := 1 To Length(r) Do r[i] := UpCase(r[i]) ;
ChDir(r) ;
If IOResult <> 0 Then
Begin
Write(r,' n''existe pas, voulez-vous le créer [o/n] ? -> ') ;
Readln(s) ;
If (s='o') Or (s='O') Then
Begin
MkDir(r) ;
WriteLn('
Création de ',r) ;
End ;
End
Else Writeln('
Ok : ',r,' existe !') ;
ReadLn ;
ChDir(s) ;
END.

Ce programme exemple16 affiche le répertoire courant du disque courant et propose à l'utlisateur de changer de répertoire. Si le répertoire choisi n'existe pas, il le crée.

DiskFree ( b ) ;
Fonction qui retourne dans une variable de type longint la taille libre en octets du disque se trouvant dans le lecteur b spécifié avec b une variable de type byte.

DiskSize ( b ) ;
Fonction qui retourne dans une variable de type longint la capacité totale exprimée en octets du disque spécifié b, avec b de type byte.

Program exemple17 ;
Uses dos ;
BEGIN

Writeln(DiskSize(0), ' octets') ;
Writeln(DiskSize(0) div 1024, '
kilo octets') ;
Writeln(DiskSize(0) div 1048576, '
méga octets') ;
Writeln(DiskSize(0) div 1073741824, '
giga octets') ;
END.

Ce programme exemple17 affiche à l'écran la capacité totale du disque dur sous différents formats, en utilisant la propriété binaire du mode de stockage.


 

2. Environnement MS-DOS

DosVersion ;
Fonction qui retourne le numéro de version du système d'exploitation MS-DOS présent dans le système sous la forme d'une variable de type word.

Program exemple18 ;
Uses dos ;
Var version : word ;
BEGIN
version := DosVersion ;
WriteLn('
MS-DOS version : ', Lo(version), '.', Hi(version)) ;
END.

Ce programme exemple18 affiche le numéro de la version résidante de MS-DOS correctement formatée avec les fonctions Lo et Hi qui renvoient respectivement le byte inférieur et suppérieur de l'information contenue dans la variable version.

DosExitCode ;
Fonction qui renvoit le code sortie d'un sous-processus sous la forme d'une variable de type word.

Valeurs de DosExitCode
ValeurDescription
0Normal
1Ctrl+C
2Device error
3Procédure Keep (TSR)

EnvCount ;
Fonction qui renvoit sous la forme d'une variable de type integer le nombre de chaînes de caractères contenues dans l'environnement MS-DOS.

EnvStr ( i ) ;
Fonction qui renvoit sous la forme d'une variable de type string la chaînes de caractères contenue dans l'environnement MS-DOS à la position dans l'index spécifiée par la variable i de type integer.

Program exemple19 ;
Uses dos ;
Var i : integer ;
BEGIN
For i := 1 To EnvCount Do WriteLn(EnvStr(i)) ; END.

Ce programme exemple19 affiche l'intégralité des chaînes d'environnement MS-DOS à l'aide d'une boucle.

GetCBreak ( break ) ;
Procédure qui permet de connaître la valeur (vrai ou fausse) de la variable break de MS-DOS. Avec break de type boolean.

SetCBreak ( break ) ;
Procédure qui permet de donner la valeur vrai ou fausse à la variable break de MS-DOS. Avec break de type boolean.


 

3. Fichiers

SetFAttr ( f, attr ) ;
Procédure qui attribut au fichier f de type file la variable attr de type word.

GetFAttr ( f, attr ) ;
Procédure qui renvoit dans la variable attr de type word, la valeur de l'attribut du fichier f déclaré en file.

Code des attributs de fichiers
ValeurNomDescription
$01ReadOnlyLecture seule
$02HiddenCaché
$04SysFileSystème
$08VolumeIDVolumeID
$10DirectoryRépertoire
$20ArchiveArchive
$3FAnyFiletous

Code des DosError
ValeurDescription
2Fichier non trouvé
3Répertoire non trouvé
5Accès refusé
6Procédure non valable
8Pas assez de mémoire
10Environnement non valable
11Format non valable
18Plus de fichiers

FExpand ( fichier ) ;
Fonction qui rajoute le chemin d'accès du fichier spécifié dans le nom de ce fichier. La variable fichier doit être de type PathStr mais vous pouvez entrer directement une chaîne de caractère.

FSplit ( fichier, dir, name, ext ) ;
Procédure qui sépare un nom de fichier (fichier) de type PathStren ses trois composantes : chemin (dir) de type DirStr, nom (name) de type NameStr, son extention (ext)de type ExtStr.

Program exemple20 ;
Uses dos ;
Var P : PathStr ;
    D : DirStr ;
    N : NameStr ;
    E : ExtStr ;
BEGIN
Write('Entrez un nom de fichier : ') ;
Readln(P) ;
FSplit(P, D, N, E) ;
Writeln('
Son chemin : "',D,'", son nom : "',N, '" et son extention : "',E,'".') ;
END.

Ce programme exemple20 demande à l'utilisateur d'entrer un nom de ficher avec son chemin, et il affiche séparément toutes les informations : le chemin, le nom et l'extention.

FileSize ( f ) ;
Fonction qui renvoit sous la forme d'une variable longint la taille du fichier f déclaré en file.

Il est possible de rechercher des fichiers selon certains critères de nom, d'attribut, d'extention avec les commandes FindFirst et FindNext. Regrouper ces commandes permet de simuler aisément la commande DIR de MS-DOS ou l'option RECHERCHER de Windows.
Syntaxe :

Program exemple21 ;
Uses dos ;
Var fichier : SearchRec ;
BEGIN
FindFirst('*.PAS', Archive, fichier) ;
While DosError = 0 Do
Begin
WriteLn(fichier.Name) ;
FindNext(fichier) ;
End ;
END.

Ce programme exemple21 permet de rechercher et d'afficher le nom de tous les fichiers correspondants aux critères de recherche, c'est-à-dire les fichiers d'extention PAS et d'attribut archive.

Voir chapitre 10 pour l'utilisation des fichiers externes, voir aussi chapitre 16 pour la gestion des dates et heures.

 

4. Mémoire vive

MemAvail ;
Cette fonction retourne la mémoire totale libre en octets.

MaxAvail ;
Cette fonction retourne la longueur en octets du bloc contigu le plus grand de la mémoire vive. Très utile pour connaître la taille allouable à un pointeur en cours d'exécution.

Responsables bénévoles de la rubrique Pascal : Gilles Vasseur - Alcatîz -