OVH Cloud OVH Cloud

For Random ?

4 réponses
Avatar
dc
Bonjour,
Quelle est la différenec entre Open XXX For Random et For Binary ? Qu'est
que ce mode aléatoire ? A quoi cela sert ?


Merci.


dc

4 réponses

Avatar
Ledev
dc wrote:
Bonjour,



Bonjour,

Quelle est la différenec entre Open XXX For Random et For Binary ?
Qu'est que ce mode aléatoire ? A quoi cela sert ?



La diférence entre Random et Binary, c'est que le premier, la lecture est
séquentiel, le second, binaire.

En gros, le binaire, tu dis que tu veus lire le fichier de telle point a
telle point, alors que Séquentiel sa le lit par enregistrement.

Voici un exemple en binaire:
dim f as integer, Tampon as string
f=freefile
open ##FICHIER## for binary as f

tampon=space(10) 'Pour lire 10 caractére du fichier
get #f,7,Tampon 'Lit les 10 caractére suivant a partir de la
position 7


Maintenant, en séquentiel(Random):
Private Type typMonCompte
Designation as string*20
Date as date
DebitCredit as long 'Au cas ou y'aurrai de gros chéque(ou grosse
facture ;-))
end type
Dim f as integer, Enreg as typMonCompte, solde as long

open app.path+"Compte.cpt" for random as f
for a=1 to lof(f)/len(Enreg) 'On parcours tous les
enregistrements
'En faite, ceci correspont a la taille total du fichier, divisée par la
taille d'un enregistrement
get #f,a,Enreg
Solde=solde+enreg.CreditDebit 'Ceci ajoute a Solde la valeur de
CreDitDibit de l'enregistrement en cour
Next a

msgbox "Vous avez " & soldes & "sur votre compte"
close f


voilà, a+
Avatar
dc
Merci beaucoup !
"Ledev" a écrit dans le message de news:
#
dc wrote:
> Bonjour,

Bonjour,

> Quelle est la différenec entre Open XXX For Random et For Binary ?
> Qu'est que ce mode aléatoire ? A quoi cela sert ?

La diférence entre Random et Binary, c'est que le premier, la lecture est
séquentiel, le second, binaire.

En gros, le binaire, tu dis que tu veus lire le fichier de telle point a
telle point, alors que Séquentiel sa le lit par enregistrement.

Voici un exemple en binaire:
dim f as integer, Tampon as string
f=freefile
open ##FICHIER## for binary as f

tampon=space(10) 'Pour lire 10 caractére du fichier
get #f,7,Tampon 'Lit les 10 caractére suivant a partir de la
position 7


Maintenant, en séquentiel(Random):
Private Type typMonCompte
Designation as string*20
Date as date
DebitCredit as long 'Au cas ou y'aurrai de gros chéque(ou


grosse
facture ;-))
end type
Dim f as integer, Enreg as typMonCompte, solde as long

open app.path+"Compte.cpt" for random as f
for a=1 to lof(f)/len(Enreg) 'On parcours tous les
enregistrements
'En faite, ceci correspont a la taille total du fichier, divisée par


la
taille d'un enregistrement
get #f,a,Enreg
Solde=solde+enreg.CreditDebit 'Ceci ajoute a Solde la valeur de
CreDitDibit de l'enregistrement en cour
Next a

msgbox "Vous avez " & soldes & "sur votre compte"
close f


voilà, a+




Avatar
Jérôme Prioux
Le propre d'un fichier Random (accès aléatoire) c'est de ne justement pas
être séquentiel !
Les enregistrements sont de longueur fixe et le nombre d'enregistrements de
fait pas le calcul taille du fichier divisé par longeur d'un enregistrement.
En fait, c'est un fichier qui est également binaire car les variables qui y
sont écrites comme variables numériques sont codées en binaire. Seules les
chaines sont lisibles.
Le fichier se présente comme un film où tous les enregistrements sont mis
bout à bout.
La structure du fichier est décrite dans le programme (nom, type et longueur
des champs).
--
________________________
Jérôme Prioux

.
"Ledev" a écrit dans le message de news:
#
dc wrote:
> Bonjour,

Bonjour,

> Quelle est la différenec entre Open XXX For Random et For Binary ?
> Qu'est que ce mode aléatoire ? A quoi cela sert ?

La diférence entre Random et Binary, c'est que le premier, la lecture est
séquentiel, le second, binaire.

En gros, le binaire, tu dis que tu veus lire le fichier de telle point a
telle point, alors que Séquentiel sa le lit par enregistrement.

Voici un exemple en binaire:
dim f as integer, Tampon as string
f=freefile
open ##FICHIER## for binary as f

tampon=space(10) 'Pour lire 10 caractére du fichier
get #f,7,Tampon 'Lit les 10 caractére suivant a partir de la
position 7


Maintenant, en séquentiel(Random):
Private Type typMonCompte
Designation as string*20
Date as date
DebitCredit as long 'Au cas ou y'aurrai de gros chéque(ou


grosse
facture ;-))
end type
Dim f as integer, Enreg as typMonCompte, solde as long

open app.path+"Compte.cpt" for random as f
for a=1 to lof(f)/len(Enreg) 'On parcours tous les
enregistrements
'En faite, ceci correspont a la taille total du fichier, divisée par


la
taille d'un enregistrement
get #f,a,Enreg
Solde=solde+enreg.CreditDebit 'Ceci ajoute a Solde la valeur de
CreDitDibit de l'enregistrement en cour
Next a

msgbox "Vous avez " & soldes & "sur votre compte"
close f


voilà, a+




Avatar
Ledev
Jérôme Prioux wrote:
Le propre d'un fichier Random (accès aléatoire) c'est de ne justement
pas être séquentiel !



Bas il lit bien les enregistrements sur une longueur fixe, genre 1
enregistrement ferai 200 octet il lit par tranche de 200 octets, me
semblait-il que c'était sa séquentiel(même si c'est vrai qu'on peut lire
n'importe quelle enregistrement et pas du début vers la fin).


Les enregistrements sont de longueur fixe et le nombre
d'enregistrements de fait pas le calcul taille du fichier divisé par
longeur d'un enregistrement. En fait, c'est un fichier qui est
également binaire car les variables qui y sont écrites comme
variables numériques sont codées en binaire. Seules les chaines sont
lisibles.



Oui, mais on l'ouvre pas en mode binaire ;-)

Le fichier se présente comme un film où tous les enregistrements sont
mis bout à bout.
La structure du fichier est décrite dans le programme (nom, type et
longueur des champs).



par le type utilisateur de la variable.

En faite, les type utilisateurs marche comme ceci:
Pour un type définit:
private type MonType
c1 as string*20 'Chaine d'une longueur de 20 caractére
c2 as long 'Nombre de type long(32 bits)

La variable pointe vers une zone mémoire de 24 octet(20 caractére plus 4
pour le type long). ainsi, une variable de type MonType pourrai voir sa zone
mémoire orgianisée comme ceci:

'11111111111111111112222'
Avec, a la place des 1, la valeurs de C1, et a la place des 2, la valeurs de
c2.
Lors de l'accés a MaVar.c2, il renvoie le nombre décimal stoquer sous
2222(en binaire).

Maintenant, pour en revenir au fichier, lors de la lecture ils s'orguanise
comme ceci:
-Il se place au début de l'enregistrement(octet 1 pour 1er enreg, 25
pour le second...)
-Il lit 24 caractére du point de départ
-Et les places, sans riens traitez, dans la zone mémoire pointer par
MaVar(qui est de type MonType).

Et les données seront naturellement placée au niveau des 1 et des 2 selons
leurs emplacement dans le fichier(et lors de l'écriture, il ne tiens pas
comptes des champs mais place égualement la totalité des 24 octets dans le
fichiers en partant du début de l'enregistrement).

Voilà, j'éspère ne pas être trop incompréhensible, a+.