[RESOLU]problème structures

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pierre003
Messages : 60
Inscription : ven. 27/mai/2016 8:27
Localisation : 03

[RESOLU]problème structures

Message par pierre003 »

Bonjour a toute et a tous
Je tente de bidouiller un fichier GedCom (standard de généalogie qui est du text mais pas évident a décortiquer dans les relations familiales) mais là n’est pas le problème.
Je voulais à l’ origine tout balancer dans un fichier à accès direct qui était simple pour moi mais pas possible dans PureBasic et c’est bien dommage.
Question : je voudrai avoir la longueur d’une structure et le résultat est un peu étrange, donc en langage clair je pédale dans la choucroute.
Merci pour vos réponses (d'autres questions suivront je pense)

Code : Tout sélectionner

Structure Personne
    Nom.s{10}
    Prenom.s{25}
    Sexe.s{1}
    NoCouple1.u
    NoCouple2.u
    NoCouple3.u
    DateNaissance.s{12}
    LieuNaissance.s{25}
    DateDeces.s{12}
    LieuDeces.s{25}
  EndStructure
  Global Dim FicheGene.Personne(10)
  i=SizeOf (personne)
  Debug "long structure : " + Str(i)
  ;     le résultat est  :  long structure : 226  ???'
  
Dernière modification par pierre003 le jeu. 02/août/2018 7:22, modifié 1 fois.
Toshiba satellite Windows 7 64bits
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: problème structures

Message par Marc56 »

Je tente de bidouiller un fichier GedCom (standard de généalogie qui est du text mais pas évident a décortiquer dans les relations familiales) mais là n’est pas le problème.
Je voulais à l’ origine tout balancer dans un fichier à accès direct qui était simple pour moi mais pas possible dans PureBasic et c’est bien dommage.

Mais si, ça existe, comme dans tous les langages.
En PB: FileSeek()

Mais bon, l'accès direct pour ce type d'usage (généalogie ?) c'est pas idéal (place perdue)
JSON pourrait être envisagé, mais avec 4000 enregistrements (tes précédents posts), ton fichier sera illisible et lent.
Le mieux c'est SQLite, et ça tombe bien c'est natif en PB.
Tu n'auras pas à te soucier de la longueur des noms
Tu pourras partager ta base de données avec d'autres utilisateurs
Tu peux lire et écrire dedans par excel

:wink:
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: problème structures

Message par boby »

Question : je voudrai avoir la longueur d’une structure et le résultat est un peu étrange
25+12+25+12+1+25+10 = 110, par défaut PB compile en unicode donc 2 bytes / caractères 110*2 = 220, tu as 3 variables unicode (.u) donc 3*2 = 6, 220 + 6 = 226 le compte est bon, qu'est-ce qui te pause problème ?
pierre003
Messages : 60
Inscription : ven. 27/mai/2016 8:27
Localisation : 03

Re: problème structures

Message par pierre003 »

Marc56 a écrit :
Je tente de bidouiller un fichier GedCom (standard de généalogie qui est du text mais pas évident a décortiquer dans les relations familiales)
Le mieux c'est SQLite, et ça tombe bien c'est natif en PB.
Tu n'auras pas à te soucier de la longueur des noms
Tu pourras partager ta base de données avec d'autres utilisateurs
Tu peux lire et écrire dedans par excel

:wink:
Merci pour ta réponse,
Ce n’est pas pour refaire un logiciel de généalogie, les logiciels font ça très bien.
Moi ce que j’ai envi de faire c’est quand j’épluche systématiquement les archives d’une commune que ce soit naissance, mariage ou décès je puisse vérifier rapidement si le nom de cette personne est déjà dans la base GedCom et avec son conjoint, parents ou ses enfants, sa commune… il a des chance d’être de la famille.
Ce que je fais actuellement avec Heredis mais c’est assez long et au bout d’un moment je fais l’impasse.
Ce serait une base nom, prénom, conjoints, lieu et date de naissance, mariages, décès et ?
Ce serait déjà pas mal.
Mais comme il y a aussi dans GedCom les latitudes et longitudes des communes si j’étais fort en math je pour faire in tris des personnes qui habitaient dans une commune du secteur, mais là faut pas rêver.
Pour SQLite je vais voir ça et j’espère que ce n’est pas trop compliqué pour un vieux comme moi. :?
J’espère qu’il y a un tuto car PureBasic a l’air très bien mais l’aide n’est pas top quelques fois pour moi. :oops:
Toshiba satellite Windows 7 64bits
pierre003
Messages : 60
Inscription : ven. 27/mai/2016 8:27
Localisation : 03

Re: problème structures

Message par pierre003 »

boby a écrit :
Question : je voudrai avoir la longueur d’une structure et le résultat est un peu étrange
25+12+25+12+1+25+10 = 110, par défaut PB compile en unicode donc 2 bytes / caractères 110*2 = 220, tu as 3 variables unicode (.u) donc 3*2 = 6, 220 + 6 = 226 le compte est bon, qu'est-ce qui te pause problème ?
Merci pour ta réponse,
J’étais toujours sur VisualBasic et un string déclaré en longueur 25 faisait 25.
Maintenant j’ai compris. :oops:
Toshiba satellite Windows 7 64bits
Marc56
Messages : 2146
Inscription : sam. 08/févr./2014 15:19

Re: problème structures

Message par Marc56 »

Mais comme il y a aussi dans GedCom les latitudes et longitudes des communes si j’étais fort en math je pour faire in tris des personnes qui habitaient dans une commune du secteur, mais là faut pas rêver.
Savoir par commune est effectivement compliqué, mais par contre tu peux calculer la distance à vol d'oiseau, donc savoir si une personne est proche. La taille moyenne d'une commune en France est de 10 Km². Simple trigonométrie. (Sinus et Cosinus). 1° ~= 111,11 km
Donc, à la louche, sans calculs trigo, si tu as 1/10 de différence dans un sens ou l'autre ils sont à moins de 10 km
https://blogs.msdn.microsoft.com/ogdifr ... des-maths/
Attention, comme tout langage informatique, les calculs d'angles se font en Radians (contrairement au calculatrices scientifiques qui sont par défaut en Degrés), mais les fonction de conversion existent.
Pour SQLite je vais voir ça et j’espère que ce n’est pas trop compliqué pour un vieux comme moi. :?
Nous sommes tous vieux, mais le cerveau est un "muscle" il peut continuer d'apprendre sans arrêt (contrairement à ce qu'on a dit pendant des années). Moins vite, mais avec un référentiel qui augmente tout le temps. Les prix Nobels sont rarement des perdreaux de l'année :mrgreen: L'avantage de baser tes données sur une système SQL est que tu n'auras ensuite qu'une seule procédure pour toutes les recherches: seule la requête elle-même change. Tu peux faire des recherches / filtrage sur tout ou partie d'un nom et même sur des phonèmes.
J’espère qu’il y a un tuto car PureBasic a l’air très bien mais l’aide n’est pas top quelques fois pour moi. :oops:
Comparé à la plupart des aides (cochonneries verbeuses imbuvables illisibles) des langages actuels, l'aide de PB est une merveille de précision 8) mais il faut lire en premier les chapitres généraux et ensuite relire plusieurs fois chaque aide contextuelle.
Si tu es fluent in english et que tu as du temps, il y a un tuto rigolo et sympa ici:
http://ninelizards.com/purebasic/

:wink:
pierre003
Messages : 60
Inscription : ven. 27/mai/2016 8:27
Localisation : 03

Re: problème structures

Message par pierre003 »

Marc56 a écrit :
Mais comme il y a aussi dans GedCom les latitudes et longitudes des communes si j’étais fort en math je pour faire in tris des personnes qui habitaient dans une commune du secteur, mais là faut pas rêver.
Savoir par commune est effectivement compliqué, mais par contre tu peux calculer la distance à vol d'oiseau, donc savoir si une personne est proche. La taille moyenne d'une commune en France est de 10 Km². Simple trigonométrie. (Sinus et Cosinus). 1° ~= 111,11 km

http://ninelizards.com/purebasic/

:wink:
Merci pour ta réponse et ton humour,
Pour les communes, comme je suis du genre feignasse j’aurai pris ‘Bray-Dunes’(pour le nord), ‘Puig de Coma Negra’ (pour le sud) 51°- 42° = 9° a la louche pour 973km donc 108 Km par ° donc a la louche , on arrive grosso modo au même résultat, et pour est-ouest la même chose avec d’autres villages.
Le but c’est que lorsqu’on épluche les registres d’une commune on puisse avoir un filtre et avoir les personnes qui sont nés, mariés ou décédés dans cette commune ou dans les communes comprises dans un carré (ou plutôt un rectangle) de X km autour de cette commune et susceptible un jour ou l’autre de faire partie de la famille(a), les personnes ne se déplaçaient pas comme maintenant, ce n’est déjà plus a la louche mais presque au tractopelle mais ça suffit.
Exemple dans ma généalogie j’ai 4000 personnes avec environ 800 noms de famille pour l’instant et je n’ai pas besoin d’afficher le nom des personnes qui étaient à l’autre bout de la France ou à l’étranger (et de plus mon neurone ne va pas suivre).
(a) si on monte assez loin dans les ancêtres et que l’on cherche leurs descendances on a des chances de les retrouver.
D’après un puissant calcul d’un matheux les Français de souche ont 7 chances sur 10 de descendre de Charlemagne donc. 8O .

Pour moi l’english, c’est de l’Hébreux :oops:

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 mais j’ai un problème avec FileSeek.
Jusqu’au 4 ème enregistrement ça marche super, mais ensuite il y a un décalage au dessus de 1000.
J’ai vérifié la position du début du 5 ème 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. c'est surement moi qui m... :?: :?:
Je vais tenter de faire la copie d'une partie du fichier et du programme si j'y arrive.
Toshiba satellite Windows 7 64bits
boby
Messages : 261
Inscription : jeu. 07/juin/2007 22:54

Re: problème structures

Message par boby »

Pour SQLite je vais voir ça et j’espère que ce n’est pas trop compliqué pour un vieux comme moi.
http://sql.sh/cours

Et voila ! tu connais les bases suffisante pour ton programe en SQL !
Répondre