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