![]() |
Delphi-Version: XE2
Save Dialog inkl. XML
Hallo zusammen,
ich habe das Internetz bereits durchsucht und nur wenige hilfreiche/verständliche Tipps erhalten. Zu meinem Problem. Ich möchte eine XML-Datei speichern. Dies soll über einen SaveDialog geschehen. Zur Zeit sieht das so aus:
Delphi-Quellcode:
Ich habe es jetzt folgendermaßen geändert:
Data.SaveToFile('Dateiname.xml');
Delphi-Quellcode:
Aber wenn ich meine Daten geschrieben habe, werden diese der bestehenden XML-Datei nicht hinzugefügt.
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 ShowMessage('Die Datei konnte gespeichert werden.'); end else begin ShowMessage('Die Datei konnte nicht gespeichert werden.'); end; SaveDialog.Free; end; Auch eine neue Datei wird nicht angelegt - Wenn ich es nicht besser wüsste, würde ich sagen, ich mache was falsch. Also Vorschau: Ich möchte auch gerne noch einen OpenDialog - speichern ist mir aber gerade wichtiger. Gruß Jan |
AW: Save Dialog inkl. XML
Dieser Dialog kapselt /ausschliesslich/ die Interaktion mit dem Benutzer und fragt diesem nach einem Pfad und Dateinamen - mehr nicht. Speichern musst Du selbst. Du bist im Prinzip an der richtigen Stelle - denn dort, wo Du derzeit die ShowMessage('XML gespeichert') anzeigst, musst Du es nur tun. Über die Eigenschaft SaveDialog.Filename bekommst Du den Datennamen, den der Anwender gewählt hat.
:-) |
AW: Save Dialog inkl. XML
Danke dir. Das Problem wurde gelöst, dachte nicht, dass es so schnell geht. :)
Gruß Jan |
AW: Save Dialog inkl. XML
Hat immerhin 8 Minuten gedauert :-D
|
AW: Save Dialog inkl. XML
Ich hab da irgendwie ein Problem... es nennt sich Exception.
Also ich mache folgendes: Im "OnCreate" meiner Hauptform rufe ich den Befehl
Delphi-Quellcode:
auf.
Xmlvalue.Open;
Delphi-Quellcode:
Das soll eigentlich dafür sorgen, dass wenn ich keine bestehende Datei auswähle, eine neue erstellt wird.
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; Ich trage anschließend etwas in Editfelder und drücke auf speichern:
Delphi-Quellcode:
Dort in der Funktion werden die Daten übernommen und anschließend steht dort zum Schluss:
Xmlvalue.AddChild(Von_E.Text, Bis_E.Text, Stichwort_E.Text);
Delphi-Quellcode:
was mich an meinen SaveDialog weiterleitet:
Save;
Delphi-Quellcode:
Ich habe ein bestehendes XML-Dokument, das möchte ich aber nicht überschreiben, sondern ein neues erstellen. Also trage ich einen anderen Namen ein.
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; Ohne etwas zu machen kam dann eine Readofadress-exception - warum? :?: |
AW: Save Dialog inkl. XML
Zitat:
Wenn ich mir das da oben angucke, dann liegt der Fehler - vermutlich - im Bereich Deiner XML-Behandlung, weniger beim Speichern an sich. In welcher Zeile fliegt er Dir denn weg? Wenn Du Dein Programm aus der IDE heraus startest, sollte der Debugger an der fehlerhaften Stelle stehen bleiben. |
AW: Save Dialog inkl. XML
Alles klar, ich Genie wollte eine nicht beschriebene Liste ausgeben. :oops:
Gruß Jan |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:23 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz