Ich hab da irgendwie ein Problem... es nennt sich
Exception.
Also ich mache folgendes:
Im "OnCreate" meiner Hauptform rufe ich den Befehl
Xmlvalue.Open;
auf.
Delphi-Quellcode:
procedure TXmlfunction.Open;
begin
OpenDialog := TOpenDialog.Create(
nil);
OpenDialog.Title := '
Datei auswählen';
OpenDialog.Options := [ofFileMustExist];
OpenDialog.InitialDir := GetCurrentDir;
OpenDialog.Filter := '
XML|*.xml';
if OpenDialog.Execute
then
begin
Data :=
Xml.XMLDoc.LoadXMLDocument(OpenDialog.FileName);
firstchild := Data.ChildNodes['
Arbeitszeiterfassung'];
secondchild := firstchild.ChildNodes['
Arbeitszeit'];
Xmllist := TObjectlist<TList>.Create;
repeat
Xmllist.Add(TList.Create(secondchild.ChildNodes['
Nummer'].Text, secondchild.ChildNodes['
Von'].Text,
secondchild.ChildNodes['
Bis'].Text, secondchild.ChildNodes['
Dauer'].Text,
secondchild.ChildNodes['
Stichwort'].Text, secondchild.ChildNodes['
Summe'].Text));
secondchild := secondchild.NextSibling;
until secondchild =
nil;
ShowMessage('
Die Datei wurde geladen.');
end
else
begin
Data := NewXMLDocument;
Data.Encoding := '
utf-8';
firstchild := Data.AddChild('
Arbeitszeiterfassung');
ShowMessage('
Die Datei konnte nicht geladen werden.');
end;
OpenDialog.Free;
end;
Das soll eigentlich dafür sorgen, dass wenn ich keine bestehende Datei auswähle, eine neue erstellt wird.
Ich trage anschließend etwas in Editfelder und drücke auf speichern:
Xmlvalue.AddChild(Von_E.Text, Bis_E.Text, Stichwort_E.Text);
Dort in der Funktion werden die Daten übernommen und anschließend steht dort zum Schluss:
Save;
was mich an meinen SaveDialog weiterleitet:
Delphi-Quellcode:
procedure TXmlfunction.Save;
begin
SaveDialog := TSaveDialog.Create(
nil);
SaveDialog.Title := '
XML speichern';
SaveDialog.InitialDir := GetCurrentDir;
SaveDialog.Filter := '
XML|*.xml';
SaveDialog.DefaultExt := '
xml';
if SaveDialog.Execute
then
begin
Data.SaveToFile(SaveDialog.FileName);
ShowMessage('
Die Datei konnte gespeichert werden.');
end
else
begin
ShowMessage('
Die Datei konnte nicht gespeichert werden.');
end;
SaveDialog.Free;
end;
Ich habe ein bestehendes
XML-Dokument, das möchte ich aber nicht überschreiben, sondern ein neues erstellen. Also trage ich einen anderen Namen ein.
Ohne etwas zu machen kam dann eine Readofadress-
exception - warum?