AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi Seltsames Probelm mit SaveDialog + XML
Thema durchsuchen
Ansicht
Themen-Optionen

Seltsames Probelm mit SaveDialog + XML

Ein Thema von voodoo · begonnen am 12. Apr 2005 · letzter Beitrag vom 21. Apr 2005
Antwort Antwort
voodoo

Registriert seit: 9. Apr 2005
17 Beiträge
 
#1

Seltsames Probelm mit SaveDialog + XML

  Alt 12. Apr 2005, 15:01
Hallo,
ich habe ein Programm mit XML & SaveDialog. Ich arbeite das erste Mal mit XML in Delphi und habe auch mit Delphi weniger Erfahrung, vielleicht ist es also auch ein ganz einfacher, dummer Fehler von mir.

Ich habe zwei Edit-Felder (2 Strings, dabei soll ein String ein Dateipfad sein), deren Inhalt ich in eine XML-Datei integriere, also etwas wie Hinzufügen. Das geht bei den normalen Eingaben auch ohne Probleme.
Da nun der eine String ein Pfad sein soll, habe ich zusätzlich einen Button erstellt, über den man ein SaveDialog aufrufen kann (Datei wird später eh erst erstellt / überschrieben, daher SaveDialog).

Jedenfalls wird nichts mehr an die XML-Datei angehängt, sobald ich den SaveDialog benutzt habe.
Sobald ich seinen Aufruf wieder auskommentiere, geht wieder alles. Warum?

Hier zwei Code-Auszüge:

Aufruf des Dialogs
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
begin
if SaveDialog1.Execute then
      begin
           //Dateiname
           Edit1.Text := SaveDialog1.FileName;
      end;
ShowMessage(SaveDialog1.FileName); //ist der korrekte Pfad
end;

Speicherung der XML-Daten in Datei
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
   playlist: IXMLNode;
   value : IXMLElement;
begin
playlist := XMLDoc.createElement('playlist');

value := XMLDoc.createElement('name');
value.text := Edit1.Text;
playlist.appendChild(value);

value := XMLDoc.createElement('path');
value.text := Edit2.Text;
playlist.appendChild(value);

XMLDoc.DocumentElement.appendChild(playlist);


XMLDoc.save('bla.xml');

end;
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 12. Apr 2005, 15:51
Zitat von voodoo:
Hier zwei Code-Auszüge:
Sind´s denn auch die richtigen? Ich erkenne nichts, das auf ein Problem hindeuten würde.
  Mit Zitat antworten Zitat
voodoo

Registriert seit: 9. Apr 2005
17 Beiträge
 
#3

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 12. Apr 2005, 15:58
Ja, es sind die richtigen.

Kommentiere ich den SaveDialog-Bereich aus, geht auch wieder alles
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#4

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 12. Apr 2005, 16:09
Auf was zeigt denn der Pfad im ersten Edit? Wenn der Pfad auf eine Datei zeigt, deren Referenz in der XML-Datei gespeichert wird, würd ich mal OpenDialog verwenden...
  Mit Zitat antworten Zitat
voodoo

Registriert seit: 9. Apr 2005
17 Beiträge
 
#5

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 12. Apr 2005, 20:01
Sorry, aber das verstehe ich nicht ganz.
  Mit Zitat antworten Zitat
voodoo

Registriert seit: 9. Apr 2005
17 Beiträge
 
#6

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 12. Apr 2005, 21:30
Argh, sorry, war ein ganz dummer Fehler von mir.

Ich hatte ausversehen einen relativen Pfad angegeben bei der XMLDoc.save()-Prozedur. Durch das Auswählen eines Pfades wurde natürlich das Verzeichnis gewechselt und somit wurde die XML-Datei dort abgespeichert, wo ich zuvor eine Datei über den Dialog ausgewählt habe.
  Mit Zitat antworten Zitat
voodoo

Registriert seit: 9. Apr 2005
17 Beiträge
 
#7

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 20. Apr 2005, 21:14
Dann nutze ich Thread gerade mal weiter. Ich benutze Delphi 5 & OmniXML.

Ich habe folgendes XML-Grundgerüst:

XML-Code:
<index>
    <playlist>
        <name>foo</name>
        <path>C:\Pfad\bla</path>
    </playlist>
    [...]
</index>
Nun will ich einen Playlistknoten löschen, wenn dieser einen bestimmten Namen hat. Hierfür benutze ich folgenden Code:
Delphi-Quellcode:
procedure TForm1.Lschen1Click(Sender: TObject);
var node: IXMLNode;
begin
if Assigned(Listview1.Selected) then begin
node := xmlDoc.documentelement.selectSingleNode('/index/playlist[name="'+ListView1.selected.Caption+'"]');
xmlDoc.documentElement.removeChild(node);
end;
Allerdings passiert gar nichts. Durch einen Haltepunkt konnte ich herausfinden, dass 'node' immer leer ist. Ich habe schon viel rumexperimentiert, bin allerdings nicht auf die richtige Lösung gekommen.
Wie muss den XPath (?) korrekt heißen, oder warum ist 'node' leer?

Vielen Dank!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 21. Apr 2005, 07:20
Etwa so sollte es gehen:

Delphi-Quellcode:
procedure TForm1.Lschen1Click(Sender: TObject);
var
  node: IXMLNode;
  xPath, sName: string;
begin
  if Assigned(Listview1.Selected) then begin
    sName := ListView1.selected.Caption;
    sPath := Format('/index/playlist/name[. = "%s"]', [sName]);
    node := xmlDoc.documentelement.selectSingleNode(xPath);
    if Assigned(node) then
      xmlDoc.documentElement.removeChild(node);
  end;
end;
Grüße vom marabu
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#9

Re: Seltsames Probelm mit SaveDialog + XML

  Alt 21. Apr 2005, 07:58
Warum kapselst du die Playlist nicht einfach in einer Klasse?
Solches direkte XML Gefriemel ist doch ziemlich unschön und fehleranfällig.
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:09 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