cs_mehdibou
Messages postés
365
Date d'inscription
vendredi 24 mai 2002
Statut
Membre
Dernière intervention
18 octobre 2004
24 oct. 2002 à 11:33
Pour protéger un fichier, il doit sûrement exister une fonction API de Kernel. Mais je ne la connais pas. Sinon, tu peux ouvrir ce fichier en mode input ou binary (afin de ne pas l'effacer) et de mettre un verrou (extrait de l'aide de VB3) :
Open fichier [For mode] [Access accès] [verrou] As [#]numéro-de-fichier [Len = longueur]
verrou Mot réservé qui spécifie les opérations que d'autres processus peuvent exécuter sur le fichier ouvert : Shared, Lock Read, Lock Write, Lock Read Write.
L'argument accès peut être l'un des mots clés suivants :
Type d'accès Description
Read Ouvre le fichier uniquement en lecture.
Write Ouvre le fichier uniquement en écriture.
Read Write Ouvre le fichier à la fois en lecture et en écriture. Ce mode n'est valide que pour les fichiers en mode Random et Binary ainsi que pour les fichiers ouverts en mode Append.
La clause verrou est utilisée en environnement multiutilisateur ou multitraitement pour restreindre l'accès à un fichier ouvert à d'autres processus ou d'autres utilisateurs. L'argument peut être l'un des mots clés suivants.
Type de verrou Description
Shared N'importe quel processus de n'importe quelle machine peut lire ou écrire dans ce fichier.
Lock Read Aucun autre processus n'est autorisé à lire ce fichier. Ce verrou ne s'applique que si aucun autre processus n'a précédemment reçu, pour ce fichier, l'accès en lecture.
Lock Write Aucun autre processus n'est autorisé à écrire dans ce fichier. Ce verrou ne s'applique que si aucun autre processus n'a précédemment reçu, pour ce fichier, l'accès en écriture.
Lock Read Write Aucun autre processus n'est autorisé à lire ou à écrire dans ce fichier. Cet accès n'est permis que si l'accès en écriture ou en lecture n'a pas déjà été accordé à un autre processus, ou si aucun verrou Lock Read ou Lock Write ne se trouve déjà en place.
Si vous ne spécifiez aucun type de verrou, le fichier peut être ouvert en lecture et en écriture un nombre de fois indéterminé par instruction. Toutefois, aussi longtemps que le fichier est ouvert, son accès est refusé à d'autres opérations.
Pour la fonction Like, voici ce que donne l'aide de VB3 :
Permet de comparer deux expressions de chaîne.
Syntaxe
résultat = expression Like modèle
Remarques
Si expression correspond à modèle, résultat est True. En l'absence de correspondance, résultat est False. Si expression ou modèle est de type Null, résultat est aussi de type Null. Le respect des majuscules et des minuscules ainsi que l'ordre de tri des caractères de l'opérateur Like dépendent du paramétrage de l'instruction Option Compare. Cependant, si le module ne contient pas d'instruction Option Compare, la méthode de comparaison de chaînes par défaut est de type Binary, qui utilise une différenciation des majuscules et des minuscules lors de la comparaison de chaînes.
La comparaison de chaînes peut être polyvalente grâce aux modèles incorporés. Vous pouvez ainsi utiliser des caractères génériques semblables à ceux reconnus par le système d'exploitation pour vérifier la correspondance entre des chaînes. Le tableau ci-dessous reprend les caractères génériques qui sont à votre disposition, ainsi que le nombre de chiffres ou de chaînes de caractères auxquels ils correspondent.
Caractère(s) Correspondances
dans modèle dans expression
? N'importe quel caractère unique
* Zéro caractère ou davantage
# N'importe quel chiffre unique (0 - 9)
[listecaractères] N'importe quel caractère appartenant à listecaractères
[!listecaractères] N'importe quel caractère n'appartenant pas à listecaractères
Un groupe d'un ou de plusieurs caractères (listecaractères) entourés de crochets ([ ]) peut être utilisé pour correspondre à n'importe quel caractère unique de expression et peut inclure pratiquement n'importe quel caractère du jeu de caractères ANSI, y compris des chiffres. En fait, les caractères spéciaux tels que le crochet ouvrant ([ ), le point d'interrogation (?), le dièse (#) et l'astérisque (*) ne peuvent être utilisés pour correspondre directement à eux-mêmes que s'ils sont entourés de crochets. Le crochet fermant ( ]) ne peut pas être utilisé au sein d'un groupe pour correspondre à lui-même. Toutefois, il peut être utilisé à l'extérieur d'un groupe en tant que caractère isolé.
Outre une simple liste de caractères entourés de crochets, listecaractères peut spécifier une plage de caractères dont les limites supérieure et inférieure sont séparées par un trait d'union (-). Par exemple, [A-Z] dans modèle engendre une correspondance si la position du caractère dans expression contient une lettre majuscule comprise dans la plage allant de A à Z. Plusieurs plages peuvent être comprises entre crochets sans être délimitées entre elles. Par exemple, [a-zA-Z0-9] correspond à tout caractère alphanumérique.
Les autres règles importantes qui régissent la correspondance de modèles comprennent :
Un point d'exclamation (!) au début de listecaractères, qui signifie qu'il y a correspondance si expression ne contient aucun des caractères de listecaractères. Utilisé hors des crochets, le point d'exclamation correspond à lui-même.
Le trait d'union (-), qui peut apparaître au début (à la suite du point d'exclamation éventuel) ou à la fin de listecaractères pour correspondre à lui-même. Ailleurs, le trait d'union est employé pour désigner une plage de caractères ANSI.
Lorsqu'une plage de caractères est spécifiée, les caractères doivent apparaître dans l'ordre de tri croissant (du plus bas vers le plus élevé). [A-Z] est un modèle valable, mais pas [Z-A].
La suite de caractères [ ] est ignorée et est considérée comme étant une chaîne de longueur nulle.
Il existe, dans l'alphabet de certaines langues, des caractères spéciaux qui représentent en effet deux caractères distincts. Par exemple, plusieurs langues comprennent le caractère "æ" pour représenter les caractères "a" et "e" lorsqu'ils apparaissent ensemble. L'opérateur Like reconnaît l'équivalence du caractère spécial et des deux caractères individuels.
Lorsqu'une langue comprenant l'un de ces caractères spéciaux est spécifié dans la section (sLanguage) du fichier WIN.INI et que ce caractère spécial figure dans soit modèle soit expression, une correspondance est trouvée dans l'autre chaîne qui comprenne la séquence équivalente de deux caractères. De même, un caractère spécial unique figurant dans modèle, entouré de crochets (tout seul, dans une liste ou dans une plage) correspond à la séquence équivalente de deux caractères figurant dans expression.
Mehdi