QUATRIEME PARTIE

LES INTERRUPTIONS DU DOS RELATIVES AUX FICHIERS



    II. LES FONCTIONS DE RECHERCHE DE FICHIERS

Pour rechercher un fichier (ou un dossier), on se sert des fonctions 4eh (« Find First ») et 4fh (« Find Next »).

Imaginons par exemple que nous voulions chercher dans le dossier courant tous les fichiers qui portent l'extension “.com” afin de les supprimer. Comment devons-nous nous y prendre ?

    1. La fonction 4eh

La fonction 4eh sert à définir des critères de recherche et à trouver le premier fichier qui correspond à ces critères (s'il existe).

On doit passer dans DS:DX l'adresse de la chaîne de caractères qui contient le masque de recherche (dans notre exemple, ce masque est “*.com”). Par défaut, les fichiers sont cherchés dans le dossier courant. Mais on peut évidemment spécifier un autre chemin dans le masque.

Remarque importante : afin que le DOS puisse connaître sa taille, le masque doit impérativement être terminé par l'octet 00h !

On écrit également dans CX les attributs des fichiers que l'on désire trouver. Si CX vaut 0, seuls les fichiers « normaux » pourront être trouvés. En fait, chaque bit de CL représente un attribut, comme le montre le tableau ci-dessous :

Bit

Signification

1

Lecture seule

2

Fichier caché

3

Fichier système

4

Volume

5

Répertoire

6

Fichier

7

(Aucune...)

8

(Aucune...)

Pour demander à la fonction 4eh de ne pas oublier les fichiers cachés, il suffit donc de charger CX avec la valeur 2 (bit numéro 2 = 1). De même, l'attribut 00000111b (soit 7) nous permettra de trouver les fichiers en lecture seule, les fichiers cachés et les fichiers systèmes.

Remarque : Ne vous souciez pas trop des bits numéro 4 et 6. Laissez-les à 0.

Une fois que les paramètres ont été ajustés, on peut appeler la fonction 4eh. Si aucun fichier n'a été trouvé, le flag CF est mis à 1. On doit donc fait un test sur CF pour savoir si la recherche peut continuer ou si elle doit s'arrêter.
Si au contraire la fonction a trouvé un fichier, les caractéristiques de ce fichier (i.e. son nom, sa taille, ses attributs,...) sont inscrits dans une zone de la mémoire appelée DTA (« Disk Transfer Area »).

Mais où se trouve donc cette DTA et à quoi ressemble-t-elle ?

Réponse : par défaut, le DOS place la DTA dans le PSP de votre programme, à l'offset 80h.

Remarque : il vous est naturellement possible de la déplacer en faisant appel à la fonction 1ah.

Voici la structure de la DTA :

Adresse

Description

Taille (octets)

00h

Lettre du lecteur (0=courant, 1=A, 2=B, ...) sur lequel se trouve le fichier

1

01h

Modèle de la recherche

11

0Ch

Réservé

9

15h

Attributs du fichier

1

16h

Heure du fichier

2

18h

Date du fichier

2

1Ah

Taille du fichier

4

1Eh

Nom du fichier avec l'extension

13

Puisque par défaut la DTA est située dans le PSP à l'offset 80h, le nom du fichier trouvé est écrit à l'offset 80h + 1eh = 9eh. De même, la taille se trouve à l'offset 9ah, etc...

    2. La fonction 4fh

Jusqu'à présent, nous n'avons trouvé qu'un seul fichier ! Pour poursuivre la recherche, appelez la fonction 4fh sans écrire aucun paramètre dans les registres. Les caractéristiques de votre recherche ont été mémorisées dans la DTA : vous n'avez donc pas à les rappeler. De même que pour la fonction 4eh, CF est mis à 1 si aucun nouveau fichier n'a été trouvé. C'est le signe que vous pouvez arrêter votre recherche.

    3. Conclusion

Résumons nous :

Fonction

Description

Paramètres

4eh

Trouver le premier fichier qui correspond aux caractéristiques spécifiées

- DS:DX : adresse d'une chaîne contenant le masque
- CX : attributs

4fh

Trouver le prochain fichier

Aucun !

A titre d'exemple, écrivons à présent le programme que nous évoquions tout à l'heure : “trouver tous les fichiers COM du dossier courant et les effacer”.



Sommaire

Suite