AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Save Dialog inkl. XML

Ein Thema von StepByStep · begonnen am 16. Jan 2015 · letzter Beitrag vom 16. Jan 2015
Antwort Antwort
StepByStep

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

Save Dialog inkl. XML

  Alt 16. Jan 2015, 10:09
Delphi-Version: XE2
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:

Data.SaveToFile('Dateiname.xml'); Ich habe es jetzt folgendermaßen geändert:

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
    ShowMessage('Die Datei konnte gespeichert werden.');
  end
  else
  begin
    ShowMessage('Die Datei konnte nicht gespeichert werden.');
  end;
  SaveDialog.Free;
end;
Aber wenn ich meine Daten geschrieben habe, werden diese der bestehenden XML-Datei nicht hinzugefügt.
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
Jan
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Save Dialog inkl. XML

  Alt 16. Jan 2015, 10:17
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
StepByStep

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

AW: Save Dialog inkl. XML

  Alt 16. Jan 2015, 10:30
Danke dir. Das Problem wurde gelöst, dachte nicht, dass es so schnell geht.

Gruß
Jan
Jan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.534 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Save Dialog inkl. XML

  Alt 16. Jan 2015, 10:32
Hat immerhin 8 Minuten gedauert
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
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, 11: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
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Save Dialog inkl. XML

  Alt 16. Jan 2015, 11:06
Ohne etwas zu machen kam dann eine Readofadress-exception - warum?
Aus der Ferne schwer zu sagen. Vermutlich wirst Du irgendwas gemacht haben, sonst gäbe es keine Exception.
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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
StepByStep

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

AW: Save Dialog inkl. XML

  Alt 16. Jan 2015, 11:13
Alles klar, ich Genie wollte eine nicht beschriebene Liste ausgeben.

Gruß
Jan
Jan
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:29 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz