ich schreibe gerade an einem Mathematiker-Programm zum Laden & Speichern.
Problem ist ein SIGSEV-Fehler, der auftritt nach in dem ausgeführten Programm einer der zwei Buttons gedrückt wird:
Code: Alles auswählen
procedure TfrmMathematikerLadenUndSpeichernMitXML.FormCreate(Sender: TObject);
begin
if FileExists('MeineDatei.xml') // Wenn Namensdatei bereits existiert
then
begin
// existierende Namensdatei öffnen & Wurzelknoten bestimmen
ReadXMLFile(GXMLDocument, 'MeineDatei.xml'); // benötigt "laz2_XMLREAD"
GRootNode := GXMLDocument.DocumentElement;
end
else
begin
// neu anlegen einer Namensdatei
GXMLDocument := TXMLDocument.Create;
// Wurzelknoten "erzeugen" & an das Dokument "anfügen"
GXMLDocument.Appendchild(GRootNode);
end;
// Anzahl der Datensätze angeben
lblAnzahlDatensatze.Caption := IntToStr(GRootNode.ChildNodes.Count);
//lblAnzahlDatensatze.Caption := '15'
end;
procedure TfrmMathematikerLadenUndSpeichernMitXML.btnSpeichernClick(Sender: TObject);
var
LParentNode: TDOMNode;
LChildNode: TDOMNode;
LTextNode: TDOMNode;
begin
// Vaterknoten erzeugen
LParentNode := GXMLDocument.CreateElement('Datensatz');
// Eintrag "Name":
// Kindnoten erzeugen & mit Inhalt füllen, dann an Vaterknoten anhängen
LChildNode := GXMLDocument.CreateElement('Name');
// ... mit Inhalt füllen ...
LTextNode := GXMLDocument.CreateTextNode(edtName.Text);
LChildNode.AppendChild(LTextNode);
// ... Kindknoten an Vaterknoten anhängen
LParentNode.AppendChild(LChildNode);
// Vaterknoten an Wurzelknoten anhängen
GRootNode.AppendChild(LParentNode);
// Eintrag "Alter":
// Kindnoten erzeugen & mit Inhalt füllen, dann an Vaterknoten anhängen
LChildNode := GXMLDocument.CreateElement('Alter');
// ... mit Inhalt füllen ...
LTextNode := GXMLDocument.CreateTextNode(edtName.Text);
LChildNode.AppendChild(LTextNode);
// ... Kindknoten an Vaterknoten anhängen
LParentNode.AppendChild(LChildNode);
// Vaterknoten an Wurzelknoten anhängen
GRootNode.AppendChild(LParentNode);
// Eintrag "Besondere Leistung":
// Kindnoten erzeugen & mit Inhalt füllen, dann an Vaterknoten anhängen
LChildNode := GXMLDocument.CreateElement('Besondere Leistung');
// ... mit Inhalt füllen ...
LTextNode := GXMLDocument.CreateTextNode(edtName.Text);
LChildNode.AppendChild(LTextNode);
// ... Kindknoten an Vaterknoten anhängen
LParentNode.AppendChild(LChildNode);
// Vaterknoten an Wurzelknoten anhängen
GRootNode.AppendChild(LParentNode);
// Anzahl der Datensätze angeben
lblAnzahlDatensatze.Caption := IntToStr(GRootNode.ChildNodes.Count);
end;

Grüße!
Fix