AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein XML Delphi In XML löschen und weitere Einträge aktualisieren

In XML löschen und weitere Einträge aktualisieren

Ein Thema von Akut-Programming · begonnen am 7. Okt 2003 · letzter Beitrag vom 15. Okt 2003
Antwort Antwort
Seite 2 von 2     12
Akut-Programming

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

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 13. Okt 2003, 20:16
Hmm.. nach ewigen versuchen und umschreiben bzw. neu schreiben hats noch nich gefunzt. Hier is mal der komplette Aufruf meiner Prozedur - Ich hoffe ihr könnt mir nochmal helfen?!

Delphi-Quellcode:
procedure Tfrm_terminplaner.Image2Click(Sender: TObject);
var
  node, parentnode: IXMLDOMNode;
  id,id2,i,i2: integer;
begin
  if lv_eintraege.SelCount=1
    then begin
      Image1.Enabled:=true;
      Image2.Enabled:=true;
    end else
    begin
      Image1.Enabled:=false;
      Image2.Enabled:=false;
    end;
  i:=lv_eintraege.Selected.Index;
  id:=StrToInt(lv_eintraege.Items[i].Caption);
  node :=xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
  if node <> nil
  then begin
    parentnode := node.parentNode;
    parentnode.removeChild(node);
    if id=1
    then begin
      for i2:=1 to lv_eintraege.Items.Count
      do begin
        node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
        node.selectSingleNode('terminid').text:=IntToStr(id);
      end;
      end else
      for i2:=1 to lv_eintraege.Items.Count-1
      do begin
        node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
        node.selectSingleNode('terminid').text:=IntToStr(id);
      end;
      status_03.Caption:='Der Termin wurde erfolgreich gelöscht!';
      Timer1.Enabled:=true;
      frm_terminplaner.UpdateList;
    end;
    xmlDoc.save(frm_terminplaner.instpath + xmlfilename);
    frm_terminplaner.UpdateList;
    Label2.Caption:='erfasste Termine ('+IntToStr(lv_eintraege.Items.Count)+')';
end;
[EDIT] Hier springt er immer in ne Zugriffsverletzung, weiß aber nicht warum??
node.selectSingleNode('terminid').text:=IntToStr(id); Gruß,
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Akut-Programming

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

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 14. Okt 2003, 19:06
Also hab jetzt n bissl rum probiert..immer noch nichts. Wollts wie von phlux vorgeschlagen machen. Nur wenn ich das Speichern und ListUpdaten erst zum Schluss mache - was ja auch Sin ergibt, Stresst er wegen dem SelectedNode rum. Poste mal meinen umgestellten Code - So funztz zwar aber immer nur wenn maximal 2 Einträge im XML bzw. ListView sind (Das eigentliche Problem).
Delphi-Quellcode:
procedure Tfrm_terminplaner.Image2Click(Sender: TObject);
var
  node, parentnode: IXMLDOMNode;
  id,id2,i,i2: integer;
begin
  i:=lv_eintraege.Selected.Index;
  id:=StrToInt(lv_eintraege.Items[i].Caption);
  node :=xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
  parentnode := node.parentNode;
  parentnode.removeChild(node);
  xmlDoc.save(frm_terminplaner.instpath + xmlfilename); // Dies einfach mal wegdenken, wäre dann Phluxs Vorschlag
  frm_terminplaner.UpdateList; // -||-
  for i2:=1 to lv_eintraege.Items.Count-1
  do begin
    id:=StrToInt(lv_eintraege.Items[i].Caption);
    node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id)+'"]');
    node.selectSingleNode('terminid').text:=IntToStr(id);
  end;
  xmlDoc.save(frm_terminplaner.instpath + xmlfilename);
  status_03.Caption:='Der Termin wurde erfolgreich gelöscht!';
  Timer1.Enabled:=true;
  frm_terminplaner.UpdateList;

  Label2.Caption:='erfasste Termine ('+IntToStr(lv_eintraege.Items.Count)+')';
end;
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#13

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 14. Okt 2003, 19:16
Hi,
ich habe gerade mal auf die schnelle was gecodet. Das ist komplett ungetestet, weil ich kein funktionsfähiges Delphi im Moment auf dem Laptop habe. Aber es sollte funktionieren.
Delphi-Quellcode:
var
  i: integer;
  xmlNode, xmlParent: IXMLDOMNode;
  xmlXSL, sID: string;
begin
  sID := lv_eintraege.items[i].Caption;
  xmlXSL := '/PlanView/termin[terminid="'+sID+'"]';
  xmlNode := xmlDoc.selectSingleNode(xmlXSL);
  xmlParent.removeChild(xmlNode);

  xmlNode := nil;
  xmlParent := nil;
  
  for i:=0 to lv_eintraege.Items.Count-1 do begin
    sID := lv_eintraege.Items[i].Caption;
    xmlXSL := '/PlanView/termin[terminid="'+sID+'"]';
    xmlNode := xmlDoc.documentElement.selectSingleNode(xmlXSL);
    xmlNode.selectSingleNode('terminid').text := IntToStr(i);
  end;
  xmlDoc.save(self.instpath + xmlfilename);
  {... der ganze Rest von wegen Hinweise etc. ...}
  frm_terminplaner.UpdateList;
end;
Der Source ist komplett optimiert, so gut es geht.
Wenn es nicht geht (präventiver Hinweis): Zeile, Fehlermeldung, etc. angeben! Meine Glaskugel wird gerade von Luckie repariert.

Chris

PS: Dein Fehler liegt einfach darin, dass du immer von 1 nach Items - 1 zählst. Sieh dir meinen Source an und lerne.

[edit=Chakotay1308]Fehler korrigiert.[/edit]
  Mit Zitat antworten Zitat
Akut-Programming

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

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 14. Okt 2003, 21:27
Hi Chris!

Dein Posting war mir wie immer ne rießen Hilfe! Musste dann zwar noch was abändern, so funzt es aber prima:
Delphi-Quellcode:
var
  node, parentnode: IXMLDOMNode;
  i,i2: integer;
  id,xmlXSL: String;
begin
  i:=lv_eintraege.Selected.Index;
  id:=lv_eintraege.Items[i].Caption;
  xmlXSL:='/PlanView/termin[terminid="'+ID+'"]';
  node :=xmlDoc.documentElement.selectSingleNode(xmlXSL);
  parentnode := node.parentNode;
  parentnode.removeChild(node);
  node := nil;
  parentnode := nil;
  frm_terminplaner.UpdateList;
  for i2:=0 to lv_eintraege.Items.Count-1
  do begin
    id:=lv_eintraege.Items[i2].Caption;
    xmlXSL:='/PlanView/termin[terminid="'+id+'"]';
    node := xmlDoc.documentElement.selectSingleNode(xmlXSL);
    node.selectSingleNode('terminid').text:=inttostr(i2+1);
  end;
  xmlDoc.save(frm_terminplaner.instpath + xmlfilename);
  frm_terminplaner.UpdateList;


[edit]Stelle euch dann den Link zum Terminplaner unter "Freeware" zur Verfügung, wenn meine Seite fertig ist - Dann könnt ihr euch das Teil mal angucken. Wäre dann Version 1.4[/edit]
Greetz,
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 15. Okt 2003, 13:39
Hi,
das mit dem +1 ist Ansichtssache. Ich z.B. würde bei 0 anfangen.

Das neue i2 kannst du einsparen in dem du die Zeilen
Delphi-Quellcode:
  i:=lv_eintraege.Selected.Index;
  id:=lv_eintraege.Items[i].Caption;
zusammenfast nach
id:=lv_eintraege.Items[lv_eintraege.Selected.Index].Caption; Chris
  Mit Zitat antworten Zitat
Akut-Programming

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

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 15. Okt 2003, 13:44
Joa, das mit i2 hab ich auch schon mitbekommen. Hatte es ja versucht, ohne i2+1... funzte nich. Und wie du siehst fange ich ja mit i2:=0 an!!

Greetz,
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
CalganX

Registriert seit: 21. Jul 2002
Ort: Bonn
5.403 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: In XML löschen und weitere Einträge aktualisieren

  Alt 15. Okt 2003, 15:50
Hi,
das ist mir klar, denn startest immer bei 1 und somit musst du es auch hier machen.

Chris
  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 +2. Es ist jetzt 04:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf