IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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

À:

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'utilisateur 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 multiplicateur 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 chaines 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 chaine 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 chaine 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 vive

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 vive. Très utile pour connaître la taille allouable à un pointeur en cours d'exécution.


précédentsommairesuivant

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 ni 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.