AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

XML Eintrag löschen

Ein Thema von Akut-Programming · begonnen am 3. Sep 2003 · letzter Beitrag vom 4. Sep 2003
Antwort Antwort
Seite 2 von 3     12 3      
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#11

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 15:44
Ach man es geht immer noch nich. Mit diesem Code...
Delphi-Quellcode:
procedure Tfrm_planview_main.Image2Click(Sender: TObject);
var
  node, parentnode: IXMLDOMNode;
  id: integer;
begin
  id:=lv_eintraege.Selected.Index;
  node :=xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
  parentnode := node.parentNode;
  parentnode.removeChild(node);
  xmlDoc.save(frm_planview_main.instpath + xmlfilename);
  frm_planview_main.UpdateList;
  frm_planview_main.lv_eintraege.AlphaSort;
end;
...bekomme ich ne Zugriffsverletzung. Muss ich das verstehen?
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#12

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 15:55
Delphi-Quellcode:
procedure Tfrm_planview_main.Image2Click(Sender: TObject);
var
  node, parentnode: IXMLDOMNode;
  id: integer;
begin
  id:=lv_eintraege.Selected.Index;
  node :=xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
  
  if node <> nil then begin
    parentnode := node.parentNode;
    parentnode.removeChild(node);
    xmlDoc.save(frm_planview_main.instpath + xmlfilename);
    frm_planview_main.UpdateList;
    frm_planview_main.lv_eintraege.AlphaSort;
  end;
end;
Ich denke mal, du hast keinen Node mit dieser id drinne. Besser schaust vorher ob node <> nil ist. Die Zufgriffsverletzung sollte zumindest weg sein.
Daniel
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#13

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 16:12
Ja, jetzt hab ich zwar keine Zugriffsverletzung mehr, aber den letzten Eintrag der XML Datei kann er nicht löschen. Ich vermute er bekommt irgendwie die falsche ID oder so!?
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#14

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 16:20
Ich würde auch vorher prüfen, ob der Knoten ungleich nil.
Aber hast du auch daran gedacht, dass Indexwerte wie
Zitat von Akut-Programming:
id:=lv_eintraege.Selected.Index;
meist null-basierend sind, dein Index in der XML-Datei aber wahrscheinlich bei Eins beginnt?
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#15

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 16:25
@Mathias: ich habe weiter oben einen Auszug meiner XML Datei, könntest du dir das mal angucken. Und mir dann ma vielleicht beim Source helfen!?
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#16

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 16:50
Brauche ich nicht. Der Beispielcode, den Sanchez zuletzt gepostet hat, ist funktionsfähig. Zumindest klappte das bei mir in den Grundzügen: ich habe deinen XML-Code aus dem Browser kopiert und über einen Button-Klick den ersten Knoten entfernen lassen.
(Das spezielle, was sich auf die List-View bezieht, habe ich weggelassen.)

´s ging.

Was mir noch einfällt, wäre, dass eben nicht der erwartete Index zurückgeliefert wird. Möglicherweise durch deine Sortierung der List-View. Vielleicht solltest du besser den Termineintrag überprüfen? Oder auf die Sortierung verzichten.
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#17

Re: XML Eintrag löschen

  Alt 3. Sep 2003, 19:53
Alles klar, jetzt funzt´s auch bei mir. Es lag an der Sortierung! THX für die Hilfe!!!



Gruß,
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Akut-Programming

Registriert seit: 18. Aug 2003
648 Beiträge
 
#18

Re: XML Eintrag löschen [gelöst]

  Alt 4. Sep 2003, 08:38
Hmm so ganz scheints doch nich gelöst zu sein. Ich wollt jetzt grad ma meinen Eintrag bearbeiten und bekomme ne Zugriffsverletzung.

Delphi-Quellcode:
procedure Tfrm_edit.bn_speichernClick(Sender: TObject);
var
  id: string;
  node: IXMLDOMNode;
begin
  id := IntToStr(frm_terminplaner_main.lv_eintraege.SelCount);
  xmlDoc := frm_terminplaner_main.xmlDoc;
  node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+id+'"]');
  node.selectSingleNode('terminbez').text:=ed_terminbez.Text;// Hier bekomme ich die Zugriffsverletzung angezeigt
  node.selectSingleNode('datum').text:=DateToStr(cb_von_datum.Date);
  node.selectSingleNode('uhrzeit').text:=ed_von_uhrzeit.Text;
  node.selectSingleNode('bemerkung').text:=ed_bemerkung.Text;

  xmlDoc.save(frm_terminplaner_main.instpath + xmlfilename);
  frm_terminplaner_main.xmlDoc:=xmlDoc;
  frm_terminplaner_main.UpdateList;
end;
Kann mir da jemand helfen?
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#19

Re: XML Eintrag löschen

  Alt 4. Sep 2003, 08:48
hallo,

Ich würde auf alle Fälle (wie schon vorher mal beschrieben) auf node <> nil überprüfen bevor du drauf zugreifts.

Ich schätze mal das wieder deine ID nicht in der File vorkommt.
Diese Zeile
  id := IntToStr(frm_terminplaner_main.lv_eintraege.SelCount); Schätze ich ohne das Programm zu sehen als Fehler ein.
Am besten du setzt deine ID irgendwo ein dein Listview dazu rein (oder sonst wohin) und holst sie dir dann von dort raus.

grüße, daniel
Daniel
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#20

Re: XML Eintrag löschen [gelöst]

  Alt 4. Sep 2003, 10:03
Hm,
Zitat von Akut-Programming:
id := IntToStr(frm_terminplaner_main.lv_eintraege.SelCount);
"SelCount" ist doch die Anzahl der markierten Einträge, oder? Wenn du den dritten Eintrag von unten markierst, lautet das Ergebnis: Eins. Markierst du den ersten Eintrag, lautet das Ergebnis: Eins. Markierst du den ersten und den letzten Eintrag, lautet das Ergebnis: Zwei.

@Akut-Programming: Etwas mehr Sorgfalt bitte, und berücksichtige bitte den Tipp von Sanchez: Den Knoten auf <> NIL prüfen, bevor du darauf zugreifst!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 07:49 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