[RESOLU]problème avec FileSeek
Publié : ven. 27/juil./2018 16:54
Bonjour, c’est encore moi.
Pour l’instant j’ai récupéré les données qui m’intéressent de la base GedCom et crée un fichier avec un enregistrement fixe de 200 pour chaque personne, ça a l’air d’être bon pour l’extraction des données aussi mais j’ai un problème avec FileSeek.
Jusqu’au 4 ème enregistrement ça marche super, mais ensuite il y a un décalage.
J’ai vérifié la position du début du 5 ème il est à 1000 et FileSeek(1,a.q) a.q=1000 mais il y a un décalage de -2 et ce n’est pas linéaire.
J’ai tenté de changer le type de variables mais c’est la même chose.
La fin de chaque fiche c’est des « *** » (du nom au dernier * c’est normalement 200 caractères).
Voila le fichier et le programme pour les enregistrements de 1 a 4 c’est ok, mais ensuite il y a un décalage de -2 pour le 5ème, - 3 pour le 7ème …
J’ai peut être pas tout compris a la manœuvre mais ça me chauffe quand même la tête.
Ligne 6 pour changer de N° d'enregistrement.
1 la base
2 le programme (avec pleins de Debug pour tenter de trouver la faille)
Merci a tous (j'ai encore dû me planter quelque part)
Pour l’instant j’ai récupéré les données qui m’intéressent de la base GedCom et crée un fichier avec un enregistrement fixe de 200 pour chaque personne, ça a l’air d’être bon pour l’extraction des données aussi mais j’ai un problème avec FileSeek.
Jusqu’au 4 ème enregistrement ça marche super, mais ensuite il y a un décalage.
J’ai vérifié la position du début du 5 ème il est à 1000 et FileSeek(1,a.q) a.q=1000 mais il y a un décalage de -2 et ce n’est pas linéaire.
J’ai tenté de changer le type de variables mais c’est la même chose.
La fin de chaque fiche c’est des « *** » (du nom au dernier * c’est normalement 200 caractères).
Voila le fichier et le programme pour les enregistrements de 1 a 4 c’est ok, mais ensuite il y a un décalage de -2 pour le 5ème, - 3 pour le 7ème …
J’ai peut être pas tout compris a la manœuvre mais ça me chauffe quand même la tête.
Ligne 6 pour changer de N° d'enregistrement.
1 la base
2 le programme (avec pleins de Debug pour tenter de trouver la faille)


Merci a tous (j'ai encore dû me planter quelque part)
Code : Tout sélectionner
HERBELIN,Honore-Pierre-Alexandre,M,2,0,24 FEB 1835,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,,22 FEB 1895,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,**********************************DEBRAY,Louise-Victoire,F,2,0,4 APR 1838,Nogent-le-Bernard,72110,Sarthe,Pays de la Loire,FRANCE,,21 JUN 1918,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,*****************************************HERBELIN,Pierre,M,3,0,25 JUN 1793,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,,16 MAR 1869,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,***************************************************RIGAULT,Marie-Louise,F,3,0,1794,Vibraye,72320,Sarthe,Pays de la Loire,FRANCE,,10 JUN 1862,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,***********************************************************DEBRAY OU DEBRÉ,Charles Noel,M,5,0,25 DEC 1805,Gréez-sur-Roc,72320,Sarthe,Pays de la Loire,FRANCE,,,****************************************************************************************************ROUSSEAU,Marie Louise,F,5,0,3 MAY 1804,Cormes,72400,Sarthe,Pays de la Loire,FRANCE,,13 JAN 1858,Sceaux-sur-Huisne,72160,Sarthe,Pays de la Loire,FRANCE,*************************************************HERBELIN,Jean,M,7,0,20 SEP 1744,Jauzé,72110,Sarthe,Pays de la Loire,FRANCE,,22 JAN 1809,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,*************************************************************BARRÉ,Louise,F,7,0,1757,,19 DEC 1803,Saint-Maixent,72320,Sarthe,Pays de la Loire,FRANCE,****************************************************************************************************************RIGAULT,Maurice Nicolas,M,9,0,26 AUG 1762,Vibraye,72320,Sarthe,Pays de la Loire,FRANCE,,,***************************************************************************************************************
Code : Tout sélectionner
EnableExplicit
Define long.l
Define Person.s, aa.s, i.l, rect.i
Define No.q
Define a.q
No=4 ;N° d'enregistrement
a=No*200
OpenFile(1,"D:\purebasic\recup gedcom\Base.TXT")
FileSeek(1,a); position de départ
Debug "Position de FileSeek : " + Str(Loc(1))
Debug " "
Person=ReadString(1, #PB_UTF8 ,200)
CloseFile(1)
long=Len(Person)
For i= 1 To long
If Mid(Person,i,1)<>","
aa+Mid(Person,i,1)
Else
Debug aa
aa=""
EndIf
Next
Debug "N° d'enregistrement : "+No
Debug " Fileseek :"+a