AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Genealogie-Software (Bugs???)

Ein Thema von hansklok · begonnen am 2. Feb 2011 · letzter Beitrag vom 4. Feb 2011
Antwort Antwort
hansklok

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

Genealogie-Software (Bugs???)

  Alt 2. Feb 2011, 18:24
Guten Abend liebe Delphianer,

nach einiger Zeit habe ich mich doch noch einmal an ein großes Vorhaben gewagt. Die Programmierung einer Genealogie-Software für MAC-User (entwickelt wird das Ganze unter Lazarus).

Die Struktur für Personen und Familien steht, das Speichern dieser klappt. Allerdings habe ich nun die Beziehung eines Kindes zu einer Familie speichern wollen und das scheint auch zu klappen, aber sobald ich eine Datei laden will erscheint eine Fehlermeldung "Out of Memory". Was hat das zu bedeuten? ich hänge einmal meine Dateien an und würde mich freuen, wenn der ein oder andere einmal drüberschaut und das ganze auf BUGS untersucht. Eher macht es für mich keinen Sinn, weiterzuschreiben.

Beispiel-Procedure zum Schreiben einer Datei (funktioniert super!):

Delphi-Quellcode:
procedure SaveGEDCOM(AFileName: String);
begin
var
  SelPerson: TPerson;
  SelFamily: TPartnership;
  Link: TChildToFamilyLink;
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:= TChildToFamilyLink.Create;
      Link.Pedigree:= pltBIRTH;
      SelFamily.AddChild(Genealogy.Persons[0], Link);

      Link:= TChildToFamilyLink.Create;
      Link.Pedigree:= pltBIRTH;
      SelFamily.AddChild(Genealogy.Persons[3], Link);

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

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

      Link:= TChildToFamilyLink.Create;
      Link.Pedigree:= pltADOPTED;
      SelFamily.AddChild(Genealogy.Persons[1], Link);

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

  Genealogy.SaveToGEDCOM(AFilename);
end;
ABER: Sobald ich alles im Programminternen TFileStream speichere (funktioniert) und wieder lade, erscheint die oben genannte Fehlermeldung!

Vielen Dank

hansklok
Angehängte Dateien
Dateityp: pas uGenealogy.pas (29,3 KB, 8x aufgerufen)
Dateityp: pas uGenealogyFile.pas (6,9 KB, 10x aufgerufen)
Dateityp: pas uGenealogyUtils.pas (793 Bytes, 7x aufgerufen)
  Mit Zitat antworten Zitat
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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:57 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz