PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2025 → comment lire et récupérer les données d'un fichier à accés direct
comment lire et récupérer les données d'un fichier à accés direct
Débuté par evelyne.pauluzzi, 19 déc. 2004 14:06 - 3 réponses
Posté le 19 décembre 2004 - 14:06
Bonjour,
Comment peut-on récupérer les infos (non cryptées) d'un fichier à accés direct, pour les réinjecter dans un fichier hyperfile de windev afin de reconstruire une application.

j'ai essayé avec les instructions Fouvre(), FlitLigne() etc... mais je n'arrive à rien, je ne récupére que les 3 premiers champs

fichier Base.dat : Champs du fichier à accés direct
Champ 1 : 3 caractères
Champ 2 : 20 caractères
Champ 3 : 20 caractères
Champ 4 : 11 caractères
Champ 5 : 30 caractères
Champ 6 : 30 caractères
Champ 7 : 5 caractères
Champ 8: 30 caractères
Champ 9 : 18 caractères
Champ 10 :18 caractères
Champ 11 :15 caractères
Champ 12 : 2 caractères
Champ 13 :20 caractères
Champ 14 : 3 caractères (FFF)
...

il y a d'autres champs, mais seuls les 14 premiers nous suffisent
le champ 14 contient toujours FFF

L'entête du fichier va de 0 à l'octet 4112.
Ce fichier étant trop volumineux pour être récupéré via un traitement
de texte.
Cordialement
Posté le 19 décembre 2004 - 23:44
tu lis le fichier texte, tu effectes le résultat dans une structure et copie de la stucture au fichier hf champ par champ.

exemple de code :

monfichierdat est une structure
Champ1 est une chaine fixe sur 3
Champ2 est une chaine fixe sur 20
Champ3 est une chaine fixe sur 20
Champ4 est une chaine fixe sur 11
Champ5 est une chaine fixe sur 30
Champ6 est une chaine fixe sur 30
Champ7 est une chaine fixe sur 5
Champ8 est une chaine fixe sur 30
Champ9 est une chaine fixe sur 18
Champ10 est une chaine fixe sur 18
Champ11 est une chaine fixe sur 15
Champ12 est une chaine fixe sur 2
Champ13 est une chaine fixe sur 20
Champ14 est une chaine fixe sur 3
Champ15 est une chaine fixe sur (le rest de la taille d'un enreg)
fin

res = fouvre("monfichier.dat",fotexte)
flit(res,4112)
machaine = flit(res,tailleenreg)
tantque machaine <> eot
transfert(&monfichierdat,&machaine)
fichierhf.rub1 = monfichierdat.champ1
fichierhf.rub2 = monfichierdat.champ2
etc...
hajoute(monfichierhf)
machaine = flit(res,tailleenreg)
fin

A+
Adrien


"evelyne Pauluzzi" <evelyne.pauluzzi@wanadoo.fr> a écrit dans le message de
news: 41c564b1@news.pcsoft.fr...

Bonjour,
Comment peut-on récupérer les infos (non cryptées) d'un fichier à accés
direct, pour les réinjecter dans un fichier hyperfile de windev afin de
reconstruire une application.

j'ai essayé avec les instructions Fouvre(), FlitLigne() etc... mais je
n'arrive à rien, je ne récupére que les 3 premiers champs

fichier Base.dat : Champs du fichier à accés direct
Champ 1 : 3 caractères
Champ 2 : 20 caractères
Champ 3 : 20 caractères
Champ 4 : 11 caractères
Champ 5 : 30 caractères
Champ 6 : 30 caractères
Champ 7 : 5 caractères
Champ 8: 30 caractères
Champ 9 : 18 caractères
Champ 10 :18 caractères
Champ 11 :15 caractères
Champ 12 : 2 caractères
Champ 13 :20 caractères
Champ 14 : 3 caractères (FFF)
..

il y a d'autres champs, mais seuls les 14 premiers nous suffisent
le champ 14 contient toujours FFF

L'entête du fichier va de 0 à l'octet 4112.
Ce fichier étant trop volumineux pour être récupéré via un traitement
de texte.
Cordialement

Posté le 21 décembre 2004 - 10:22
J'ai essayé comme indiqué mais je ne récupére que les 3 premiers champs.
la taille des enregistrements fait 1024 octects :

IdFichier = Fouvre(Monfichier,lectureseule)
FPositionne(IdFichier,4112,Fpdebut)
Flit(IdFichier,1024) et je ne récupére que les 3 premiers champs
Posté le 21 décembre 2004 - 18:30
Attention a la forme de la variable Machaine, si un caractere 0 est
détecté , la chaine est tronquée.

Essayez avec une chaine fixe ou un buffer

Evelyne Pauluzzi wrote:

J'ai essayé comme indiqué mais je ne récupére que les 3 premiers champs.
la taille des enregistrements fait 1024 octects :

IdFichier = Fouvre(Monfichier,lectureseule)
FPositionne(IdFichier,4112,Fpdebut)
Flit(IdFichier,1024) et je ne récupére que les 3 premiers champs