French GEDCOM et B4A

Marc DANIEL

Well-Known Member
Licensed User
Klaus, Je veux bien accepter ta deuxième proposition. Voici le fichier de données créé par l'application GEDCOM et que j'ai récupéré sur mon Smartphone.
Encore merci pour ton aide précieuse et appréciée !!!
Cordialement,
Marc
 

Attachments

  • GEDCOM.zip
    62.1 KB · Views: 295
  • ListeNOMS.txt
    55.1 KB · Views: 2,028

klaus

Expert
Licensed User
Longtime User
J'avais pensé que tu m'enverrais un fichier GED, qui correspond à ce que ton programme a besoin.
Avec le ficher txt, je dois définir une routine particulière pour le lire et toi tu devrais remodeler le tout !?
Question supplémentaire, que veux-tu faire par la suite avec les données?
Selon ce que tu veux faire, la manière de mémoriser les données dans le programme peut être différente!
Donc, avant d'aller trop loin j'attends ta réponse.
 

Marc DANIEL

Well-Known Member
Licensed User
Ne te prends pas la tête avec mon projet qui évolue au fur et à mesure des progrès réalisés.
Le fichier txt (NOMS Prénoms) a été extrait du fichier GED initial et en fait c'est cette liste de NOMS + Prénoms que je souhaite remettre dans l'ordre alphabétique et non pas le fichier GED lui-même ( base.ged) où tout est classé dans un ordre aléatoire propre à chaque Plate Forme de Généalogie ou à chaque logiciel de généalogie.
Ma généalogie se trouve en ligne:

1 - sur Geneanet >Mon arbre sur GENEANET
2 - sur FILAE >Mon arbre chez FILAE
3 - sur MyHeritage >Mon Arbre chez My Heritage
et lorsque j'effectue une sauvegarde, j'obtiens un fichier GED dont l'écriture est différente selon les plates-formes, mais c'est la même généalogie, les mêmes noms.

Donc si j'arrive à regrouper les noms par ordre alphabétique (actuellement, ils sont classés au fur et à mesure de la construction de la généalogie et donc les NOMS de la même famille peuvent être séparés). Je souhaite par la suite améliorer si possible l'application en cliquant par exemple dans une liste sur un nom particulier et provoquer l'affichage des données liées à ce nom:
date et lieu de naissance, date et lieu de décès, nom et prénom du ou de la conjoint(e) et ses dates, date éventuelle du mariage, noms des enfants éventuels, noms des parents si connus.
Dans un premier temps, je vais essayer d'ajouter date et lieu de naissance au fichier txt mais c'est pas encore gagné !
Au plaisir,
Marc
 

Attachments

  • GEDCOM.zip
    62.4 KB · Views: 321

klaus

Expert
Licensed User
Longtime User
Voilà, j'ai avancé un peu mais!
Le tri en tenant comte des accents est affreusement lent environ 23 secondes pour 500 noms + prénom ou environ 10 secondes pour un tri que sur les noms!
Pour pouvoir déboguer plus rapidement j'ai commenté les lignes qui affichent la page d'accueil.
J'ai ajouté la classe Flexible Table pour avoir un affichage des données.
Pour un tri rapide, mais sans les accents, on peut utiliser la fonction tri interne à une List.
Dans le programme: Tribu.SortType("NOM", True)
La fonction ci-dessus présuppose que les données dans chaque ligne correspondent à une variable TYPE. Je l'ai découverte aujourd'hui.
Dans notre cas Type Personne (Reference As Int, NOM As String, Prenom As String).
J'y ai ajouté une référence pour montrer la différence avec le tri, mais on peut la supprimer.

J'ai navigué sur internet pour des fonctions de tri avec accents, j'ai trouvé quelque chose sous JavaScript, mais je ne sais pas encore comment l'implanter dans B4A.
Je vais continuer de chercher.

Tu peux modifier le nombre de noms lus dans la routine LectureFichierTexte, actuellement fixé arbitrairement à 500.
SI tu veux mesurer des temps d'exécution lors de tests, il faut le faire en mode Release, surtout pas en Debug car encore beaucoup plus lent.

Si tu touches une des cases entête de la Table, la liste est triée, mais sans les accents.

Ci-joint ma dernière version de test, j'y ai ajouté le numéro 7 pour avoir une référence.
 

Attachments

  • GEDCOM_7.zip
    96.6 KB · Views: 275

Marc DANIEL

Well-Known Member
Licensed User
Tu es trop fort Klaus, chapeau bas !!! Et en plus de trier les NOMS, tu as aussi trié les prénoms sans compter la gestion des accents. Je n'en demandais pas tant. Mille remerciements pour le temps que tu as du passer sur ce job, si tu n'étais pas à la source du Rhône et moi près du delta du même Rhône, je te dirai: "ça s'arrose !"
Grâce à ton travail de super-pro, je vais pouvoir avancer mon projet et tu m'as fait faire de sacrés progrès dans la programmation en B4X !

ALaTienneKlaus.jpg

Cordialement,
Au plaisir,
Marc
 

Marc DANIEL

Well-Known Member
Licensed User
Comme tu vas devenir un expert en généalogie, je te fais passer un utilitaire très simple d'utilisation "Arbre Généalogique">>>Logiciel qui a l'avantage de fonctionner sur toutes les plates-formes WINDOWS depuis W95 jusqu'à W10 et qui permet à une vitesse hallucinante de transformer un fichier GED en généalogie (Conversion GEDCOM). Il peut également permettre , après la construction pas à pas de ta généalogie, de la sauvegarder sous la forme d'un fichier GED (Exporter Dossier GEDCOM).

Capture.PNG
 

klaus

Expert
Licensed User
Longtime User
Je fais tout ça parce que j'ai plaisir à le faire.
Et en avançant avec ton projet j'ai appris de nouvelles fonctions et en plus j'ai constaté que la fonction tri, avec accents, que j'avais implantés dans Felxible Table était fausse !
Donc, c'était aussi utile pour moi.
Et à la fin SANTÉ.
 
Last edited:

Marc DANIEL

Well-Known Member
Licensed User
Si tu utilises le petit logiciel que je t'ai envoyé précédemment, les fonctions d'aide ne fonctionnent plus sous Windows 10 mais si tu utilises le Winhlp32.exe ci-joint (extrait de Windows XP) tu pourras sans problème lire les fichiers HLP joints au logiciel, même sous W10 !!!
 

Attachments

  • winhlp32.zip
    146.2 KB · Views: 268

Marc DANIEL

Well-Known Member
Licensed User
Klaus,
Grâce à ton aide précieuse, j'ai réussi la synthèse entre mes travaux et les tiens.
Donc au départ, l'application cherche un fichier "base.ged" sur File.DirRootExternal ("/Download/base.ged")
Ensuite, la liste de noms est extraite du fichier "base.ged" et sauvegardée sur File.DirRootExternal ("ListeNOMS.txt")
Puis ce fichier est relu et les noms sont classés alphabétiquement grâce à tes super-routines !!!
Je fais une pause puis je vais essayer d'améliorer le tout.
Encore merci cher Klaus !!!
Cordialement.
Marc
 

Attachments

  • GEDCOM-9.zip
    109.5 KB · Views: 252

klaus

Expert
Licensed User
Longtime User
Salut Marc,
J'ai regardé ton application, tu as bien avancé.
J'ai quelques questions et commentaires.
Pour voir un peu plus dans le détail j'ai crée un fichier GED, celui des Bourbons, depuis le programme Racines.
Ton programme le reconnait, mais à la lecture il y a quelques petits inconvénients.
1. En sauvant le fichier, il y a trois lignes avec seulement un espace. Et j'ai voulu savoir pourquoi.
En regardant le fichier GED il y a au début:
1 NAME Louis XIV //

1596966481860.png

Et plus loin:
1 NAME Henri IV //
1 NAME Louis XIII //
Et après:
1 NAME Anne /d'Autriche/

Les trois premiers sont dans la liste mais sans nom et seulement avec un caractère blanc. Alors que Anne d'Autriche apparait normalement.
Je me suis permis de modifier la routine Tri en conséquence.
J'ai remplacé le caractère de séparation par | car il peut y avoir plusieurs espaces dans les noms et prénoms.
J'avais utilisé l'espace auparavant car le ficher ListeNOMS que tu m'avais envoyé utilisait un espace.
J'avais déjà vu que les espaces posaient problème et que des noms et prénoms étaient tronqués.

2. Je pense qu'on pourrait réunir les routines Tri et NOMS en une seule routine.
Je ne l'ai pas fait car ça peut dépendre de ce que tu veux ajouter par la suite.

3. On pourrait constituer la Liste Tribu directement dans le tri au lieu de la sauver, relire et la reconstituer, car les données sont les mêmes.
Je ne l'ai pas fait non plus.
La variable Reference que j'avais ajoutée pourrait être l'index devant INDI, la valeur 11 pour Marie-Anne de Bavière.
0 @000011@ INDI
1 NAME Marie-Anne /de Bavière/

4. Concernant le fichier base.ged.
Est-ce que tu prévois un téléchargement intégré dans l'application?
Je trouve compliqué de devoir télécharger un fichier, le renommer et le lire.
Ne pourrait-on pas aussi en avoir plusieurs dans la mémoire et lire celui qui nous intéresse sur le moment?

5. Concernant les layouts.
Je me suis permis de modifier le layout accueil en utilisant des Anchors (ancres).
Tu devrais limiter l'orientation en portrait seulement, sinon il faudrait définir un layout spécifique pour l'orientation paysage (landscape).
J'ai aussi modifié quelque noms en ajoutant des préfixes pour mieux distinguer les Views, vieille habitude mais très utile quand les programmes deviennent plus grand.

Ci-join joint ma version test avec pas mal de Logs pour voir ce qu'il se passe.
Log("*" & NOM & "*" & Prenom & "*")
Les étoiles sont là pour voir s'il y a des espaces.
J'ai également joint les deux fichiers, GED et TXT de la généalogie des Bourbons que j'ai utilisés pour mes tests.

Voilà, je pense que j'ai assez 'pinaillé' pour aujourd'hui et je te souhaite du plaisir pour la suite de ton 'aventure'.

Cordialement.
Klaus
 

Attachments

  • GEDetTXT10.zip
    109.6 KB · Views: 244
  • GEDetTXT10.zip
    109.6 KB · Views: 242

Marc DANIEL

Well-Known Member
Licensed User
Klaus, tu es vraiment trop fort. J'avais déjà compris que je devais modifier ma routine de tri des fichiers GED car ils ne sont pas tous construits de la même façon.
J'étais en train de réfléchir à un nouveau système de "lecture" d'un fichier GED en partant d'un "0 @i_x@INDI" au "0 @i_x+1@INDI" suivant et en collectant en une seule fois les données concernant un seul individu. Mais tu es toujours bien plus rapide que moi ...

Toutes les plates-formes de généalogie ainsi que les logiciels regroupent en tête de fichier tous les individus alors que les familles (couples + enfants) sont regroupées en fin de liste.
En comparant les 4 fichiers ged concernant la même généalogie, mais édités par 2 plates-formes en ligne différentes et 2 logiciels de généalogie différents, je pense que je parviendrai à résoudre les bugs justement dus à ces différences.
- FILAEGedcom.ged et Geneanet.ged ont été générés par deux plates-formes en ligne FILAE et GENEANET
- Genealogos.ged et Racines.ged ont été générés par deux logiciels de généalogie (le dernier par Racines GED que je t'ai transmis)
On reconnaît d'ailleurs l'origine des fichiers GED à l'entête (0 HEAD) suivi de la source (1 SOUR)

FILAE, GENEANET et GENEALOGOS numérotent les individus après la lettre i majuscule et les familles après la lettre F
Arbre Généalogique alias "Racines" (alias FT=Family Tree en anglais) numérote individus et familles sans le i ni le F ...

Klaus, encore merci, je ne voudrais pas monopoliser tes compétences pour moi seul. Je vais continuer à bosser sur cette application mais franchement, je n'aurais jamais pensé pouvoir trouver une aide aussi amicale et efficace en rejoignant votre plate-forme B4X en décembre 2019. Grâce à toi, j'avance à grands pas !!!
Cordialement.
Marc
 

Marc DANIEL

Well-Known Member
Licensed User
Je m'aperçois que je n'ai pas répondu à tes questions.
En ce qui concerne la #2 je souhaite effectivement rajouter la date de naissance et le lieu de naissance (j'y travaille mais je suis ralenti par le fait que ces données sont présentes pour certains individus et absentes pour d'autres).
#3 - Oui l'index devant INDI est une bonne idée pour la variable Reference. Notons que dans la majorité des fichiers GED (à part ceux générés par Racines) cet index est précédé d'un I (i majuscule) comme les numéros des familles sont précédés d'un F, ça ne devrait pas être un obstacle ?
#4 - Tu as raison, pour simplifier l'application, il faudrait pouvoir lire n'importe quel fichier *.ged téléchargé. Je pense que cela doit être possible voire d'en avoir plusieurs et de choisir effectivement celui sur lequel on veut travailler.
Cordialement.
Marc
 

klaus

Expert
Licensed User
Longtime User
... système de "lecture" d'un fichier GED en partant d'un "0 @i_x@INDI" au "0 @i_x+1@INDI" suivant et en collectant en une seule fois les données concernant un seul individu.
Je suis persuadé que c'est la bonne solution.
... je ne voudrais pas monopoliser tes compétences pour moi seul.
Tu ne monopolises rien du tout!
De temps en temps je me 'pique au jeu' et plonge dans un projet et donne quelques idées, ça me permet toujours d'acquérir de nouvelles expériences.
Et comme je suis à la retraite depuis bien quelques années je n'ai plus de contraintes de boulot, de délais ni de coûts.
Je 'bosse' quand j'ai envie et que j'y prends plaisir.
En plus ça me permet de maintenir mon esprit ainsi que mon anglais.
Ces derniers jours j'ai passablement 'bricolé' des indicateurs de mesure rectangulaires, xGaugesRect, pas encore publiés officiellement.
Dès demain, je vais me remettre à continuer la mise à jour des B4X Booklets.
J'avais traduit les trois premiers en français, Livrets B4X, mais je n'ai pas continué car c'est un sacré boulot pour le peu de lecteurs en français.

Voilà, de nouveau presque l'heure de boire l'apéro, un verre de Petite Arvine, un cépage blanc autochtone que j'adore.

Cordialement.
Klaus
 

Marc DANIEL

Well-Known Member
Licensed User
Je ne connais pas ce cépage mais à ta santé Klaus !
En tous cas, en ce qui me concerne, j'ai fortement apprécié les trois livrets que tu as traduits en français et j'imagine les heures que tu as du passer à ce job !
Bon courage pour la suite.
Cordialement,
Marc
 

Sergey_New

Well-Known Member
Licensed User
Longtime User
Chers collègues, aimeriez-vous jeter un œil à ce projet généalogique?
La langue est le russe et l'anglais, mais vous pouvez également ajouter le français :)
 
Top