Einzelnen Beitrag anzeigen

hansklok

Registriert seit: 14. Apr 2004
Ort: Karlsruhe
318 Beiträge
 
Delphi 2010 Architect
 
#2

AW: Genealogie-Software (Bugs???)

  Alt 4. Feb 2011, 17:52
So,

nachdem ich das oben beschriebene Problem soweit erst einmal gelöst habe, eine weitere Frage:

Wird einer TPartnership ein Kind (TChild) über die procedure AddChild(ANumber: Integer; AChild: TChild) hinzugefügt, so soll TPartnership sich selbst in einer TPartnershipList einer TPerson, die ein TChild (TChild.Person) ist, eintragen. Denn Kinder können ja mehrere Eltern haben. Leibliche Eltern, Adoptiv- & Pflegeeltern. Dies ist für den GEDCOM-Export wichtig, weil nicht nur in die FAM-Objekte alle Kinder geschrieben werden, sondern in die Person-Objekte jeweils auch eine Referenz auf die Eltern.

Das funktioniert allerdings nicht. Hoffentlich versteht mich jemand. Ich hänge noch einmal den Quellcode an und freue mich über Antworten!


Der Aufruf im Programm würde z.B. so aussehen:

Delphi-Quellcode:
procedure SaveGEDCOM(AFileName: String);
begin
var
  SelPerson: TPerson;
  SelFamily: TPartnership;
  Link: TChild;;
begin
  SelPerson:= TPerson.Create;
  with SelPerson do begin
    Number:= 1;
    Name.FirstName:= 'Max';
    Name.LastName:= 'Mustermann';
    Sex:= sMale;
    SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Persons.Add(SelPerson);

  SelPerson:= TPerson.Create;
  with SelPerson do begin
    Number:= 2;
    Name.FirstName:= 'Lieschen Maria';
    Name.LastName:= 'Müller';
    Name.Rufname:= 'Maria';
    Sex:= sFemale;
    SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Persons.Add(SelPerson);

  SelPerson:= TPerson.Create;
  with SelPerson do begin
    Number:= 3;
    Name.FirstName:= 'Papa';
    Name.LastName:= 'Mustermann';
    Sex:= sMale;
    SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Persons.Add(SelPerson);

  SelPerson:= TPerson.Create;
  with SelPerson do begin
    Number:= 4;
    Name.FirstName:= 'Pipi';
    Name.LastName:= 'Mustermann';
    Sex:= sFemale;
    SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Persons.Add(SelPerson);

  SelPerson:= TPerson.Create;
  with SelPerson do begin
    Number:= 5;
    Name.FirstName:= 'Opa';
    Name.LastName:= 'Mustermann';
    Sex:= sMale;
    SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Persons.Add(SelPerson);

  SelFamily:= TPartnership.Create;
  with SelFamily do begin
      Number:= 1;
      Husband:= Genealogy.Persons[2];
      Wife:= Genealogy.Persons[1];

      Link:= TChild.Create;
      Link.Person:= Genealogy.Persons[0];
      Link.Partnership:= SelFAmily.Number;
      Link.Pedigree:= pltBIRTH;
      SelFamily.AddChild(SelFAmily.Number, Link); // hier kracht es immer

      Link:= TChild.Create;
      Link.Person:= Genealogy.Persons[3];
      Link.Partnership:= SelFAmily.Number;
      Link.Pedigree:= pltBIRTH;
      SelFamily.AddChild(SelFAmily.Number, Link); // hier kracht es immer

      SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Families.Add(SelFamily);

  SelFamily:= TPartnership.Create;
  with SelFamily do begin
      Number:= 2;
      Husband:= Genealogy.Persons[4];

      Link:= TChild.Create;
      Link.Person:= Genealogy.Persons[1];
      Link.Partnership:= SelFAmily.Number;
      Link.Pedigree:= pltADOPTED;
      SelFamily.AddChild(SelFAmily.Number, Link); // hier kracht es immer

      SelPerson.ChangeDate.DateTime:= Now;
  end;
  Genealogy.Families.Add(SelFamily);

  Genealogy.SaveToGEDCOM(AFilename);
end;

HG hansklok
Angehängte Dateien
Dateityp: zip Genealogie.zip (7,1 KB, 8x aufgerufen)
  Mit Zitat antworten Zitat