Thema: Delphi Save Dialog inkl. XML

Einzelnen Beitrag anzeigen

StepByStep

Registriert seit: 12. Nov 2014
Ort: Schleswig-Holstein
61 Beiträge
 
Delphi 7 Professional
 
#5

AW: Save Dialog inkl. XML

  Alt 16. Jan 2015, 10:00
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?
Jan
  Mit Zitat antworten Zitat