Cours de Turbo Pascal 7


précédentsommairesuivant

Chapitre 17 - Commandes système

Tout comme sous Dos ou Windows, il est quelquefois nécessaire de créer des répertoires, de déplacer des fichiers... Turbo Pascal 7.0 propose un certain nombre de procédures et fonctions permettant ces manipulations. Certaines d'entre elles seront discutées au cours de ce chapitre.
Les instructions suivantes nécessitent l'unité Dos.

Répertoires et lecteurs

MkDir

 
Sélectionnez

MkDir (s);

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

RmDir

 
Sélectionnez

RmDir (s);

Procédure qui supprime le sous-répertoire s (qui est une variable de type String) dans le lecteur et répertoire courant. Le sous-répertoire en question doit être vide.

ChDir

 
Sélectionnez

ChDir (s);

Procédure qui change de répertoire courant pour aller dans le répertoire s (qui est une variable de type String). Ce dernier doit bien entendu exister.

GetDir

 
Sélectionnez

GetDir (b, s);

Procédure qui renvoie le répertoire courant dans la variable s (de type String) du lecteur b (spécifié en Byte).

Code des lecteurs
Valeur Lecteur
0 Lecteur courant
1 A:
2 B:
3 C:
  ... etc

Exemple récapitulatif

 
Sélectionnez

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

 
Sélectionnez

DiskFree (b);

Fonction qui retourne, dans une variable de type LongInt, la taille libre (en octets) du disque se trouvant dans le lecteur b (variable de type Byte).

Le type LongInt limite la taille maximale gérable à 2 Gb, ce qui est très inférieur aux tailles de disque actuelles !

DiskSize

 
Sélectionnez

DiskSize (b);

Fonction qui retourne dans une variable de type LongInt la capacité totale exprimée en octets du disque spécifié b (de type Byte).
La limitation à 2 Gb mentionnée ci-dessus est également valable pour cette fonction.

 
Sélectionnez

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, dans les différentes unités usuelles.

Rappelons que le coefficient mutiplicateur entre les différentes unités est de 1024 : 1 kilo octet = 1024 octets, 1 méga octet = 1024 kilo octets, etc.

Environnement MS-DOS

DosVersion

 
Sélectionnez

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.

 
Sélectionnez

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 de MS-DOS, correctement formatée avec les fonctions Lo et Hi qui renvoient respectivement le byte inférieur et supérieur de l'information contenue dans la variable Version.

DosExitCode

 
Sélectionnez

DosExitCode;

Fonction qui renvoie le code de sortie d'un sous-processus sous la forme d'une variable de type Word.

Valeurs de DosExitCode
Valeur Signification
0 Sortie sans erreur
1 Sortie par Ctrl-C
2 Device error
3 Procédure Keep (TSR)

EnvCount et EnvStr

 
Sélectionnez

EnvCount;

Fonction qui renvoie, sous la forme d'une variable de type Integer, le nombre de chaînes de caractères contenues dans l'environnement MS-DOS.

 
Sélectionnez

EnvStr (i);

Fonction qui renvoie, sous la forme d'une variable de type String, la chaîne de caractères contenue dans l'environnement MS-DOS à la position dans l'index spécifiée par la variable i (de type Integer).

 
Sélectionnez

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 variables d'environnement MS-DOS à l'aide d'une boucle.

GetCBreak et SetCBreak

 
Sélectionnez

GetCBreak (Break);

Procédure qui permet de connaître la valeur (true ou false) de la variable Break de MSDOS. Avec Break de type Boolean.

 
Sélectionnez

SetCBreak (Break);

Procédure qui permet de fixer la valeur (true ou false) de la variable Break de MSDOS. Avec Break de type Boolean.

Fichiers

DosError

DosError est une variable interne de l'unité Dos qui contient le code d'erreur renvoyé par MS-DOS lors de la dernière opération qui lui a été demandée.

Voici les codes d'erreur les plus fréquents :

Valeurs de DosError
Valeur Description
0 Pas d'erreur
2 Fichier non trouvé
3 Répertoire non trouvé
5 Accès refusé
6 Procédure non valable
8 Pas assez de mémoire
10 Environnement non valable
11 Format non valable
18 Plus de fichiers

SetFAttr et GetFAttr

 
Sélectionnez

SetFAttr (f, Attr);

Procédure qui attribue au fichier f la variable Attr (de type Word).

 
Sélectionnez

GetFAttr (f, Attr);

Procédure qui renvoie dans la variable Attr (de type Word) la valeur de l'attribut du fichier f.

Les attributs de fichiers sont les suivants :

Attributs de fichiers
Valeur Nom Description
$01 ReadOnly Lecture seule
$02 Hidden Caché
$04 SysFile Système
$08 VolumeID VolumeID
$10 Directory Répertoire
$20 Archive Archive
$3F AnyFile tous

FExpand

 
Sélectionnez

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ères.

FSplit

 
Sélectionnez

FSplit (Fichier, Dir, Name, Ext);

Procédure qui découpe un nom de fichier (Fichier) de type PathStr en ses trois composantes :

  • chemin (Dir), de type DirStr;
  • nom (Name), de type NameStr;
  • extension (Ext), de type ExtStr.
 
Sélectionnez

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

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

FileSize

 
Sélectionnez

FileSize (f);

Fonction qui renvoie, sous la forme d'une variable LongInt, la taille du fichier f.
L'utilisation du type LongInt entraîne à nouveau qu'une taille de fichier supérieure à 2 Gb ne pourra être correctement déterminée.

Recherche de fichiers et répertoires

Il est possible de rechercher des fichiers selon certains critères de nom et d'attribut 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.

Exemple :

 
Sélectionnez

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 correspondant aux critères de recherche, c'est-à-dire les fichiers d'extension 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.

Mémoire vîve

MemAvail

 
Sélectionnez

MemAvail;

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

MaxAvail

 
Sélectionnez

MaxAvail;

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


précédentsommairesuivant

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2001-2013 Hugo Etievant. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.