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 1 von 2  1 2   
Akut-Programming

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

In XML löschen und weitere Einträge aktualisieren

  Alt 7. Okt 2003, 20:40
Hi!

Ich will in meiner XML Datei die jeweilige ID der darauf folgenden Einträge aktualsieren, sobald ein Eintrag gelöscht wurde. Ich dachte ich nehm ne for Schleife, nur gibts irgendwie Probleme.

folgender verständlicher Sachverhalt:

Ich habe in meiner XML Datei 4 Einträge und lösche z.B. den 2ten, dann wird zwar der nächste Eintrag(der 3te) aktualisiert - nimmt somit die ID 2 an, doch der danach eigentliche 3te belibt bei ID 4.

Dies wiederum bringt den kompletten Ablauf meines Programms durcheinander - Zugriffsverletzung.

Ich hab hier mal das wichtigtse der ganzen Anweisung, die For Schleife:

Delphi-Quellcode:
...
for i2:=1 to lv_eintraege.Items.Count-1 do begin
    id2 :=StrToInt(lv_eintraege.Items[i].Caption);
    node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id2)+'"]');
    node.selectSingleNode('terminid').text:=IntToStr(id);
    xmlDoc.save(frm_terminplaner.instpath + xmlfilename);
    frm_terminplaner.UpdateList;
end;
...
Ich hoffe das es reicht und mir jemand helfen kann!?

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

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#2

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

  Alt 7. Okt 2003, 21:18
Warum brauchst du denn in deiner XML Datei eine Laufvariable (die ID) die sich beim Löschen/Hinzufügen verändert??
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
CalganX

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

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

  Alt 7. Okt 2003, 21:40
Damit er immer den Eintrag genau ansprechen kann. Name wäre bspw. problematisch, weil ich z.B. mehrere Einträge "Zahnarzt" habe.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#4

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

  Alt 7. Okt 2003, 21:47
Das habe ich mir schon irgendwie gedacht, aber da gibts doch elegantere Lösungen
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
CalganX

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

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

  Alt 7. Okt 2003, 21:49
Hi,
sicherlich, aber da müsste man dann einige Sachen einbauen, von wegen DTD und so weiter (damit sollte es irgendwie möglich sein jedem Eintrag eine eindeutige Nummer zu verpassen). Aber wie genau kann ich jetzt so konkret leider auch nicht sagen.

Chris
  Mit Zitat antworten Zitat
Benutzerbild von phlux
phlux

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#6

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

  Alt 7. Okt 2003, 21:58
Ja dem Forum fehlt echt noch ein Experte der sich mit XML auskennt ich hoffe der kann dann auch XSL obwohl daran arbeite ich

@akut ich guck mir mal die source morgen an, bin heut zu müde
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
CalganX

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

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

  Alt 7. Okt 2003, 22:04
Hi,
hehe... Google ist Experte in Alles...
Nene... schon klar. Einfach mal sakura fragen...
Zitat von sakura:
Wenn du mal Fragen hast: Frag ich arbeite den ganzen Tag mit XML DOM und das schon seit 4 Jahren.
(Fehler vorbehalten. )

Chris
  Mit Zitat antworten Zitat
Akut-Programming

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

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

  Alt 8. Okt 2003, 07:37
Moin Moin!

Also wie Chris schon bemerkt hat, verwende ich die ID um die Einträge ohne Probleme zu identifizieren und ansprechen zu können. Hab schon im Forum gesucht, aber so recht Hilfe find ich da nicht!?

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

Registriert seit: 4. Nov 2002
Ort: Witten
1.335 Beiträge
 
Delphi 6 Personal
 
#9

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

  Alt 8. Okt 2003, 09:58
Hi!
Mir stellen sich ein paar Fragen zu deinem Code...
Delphi-Quellcode:
//Warum fängt i2 bei 1 an zu zählen, meines wissens fängt man bei null an, es sei denn du fängst bei
//deinen XML Eintragen bei eins an zu zählen, was allerdings dann verwirrend wäre
for i2:=1 to lv_eintraege.Items.Count-1 do
  begin
    id2 :=StrToInt(lv_eintraege.Items[i].Caption);//Wo kommt das i her? Müsstest du hier nicht i2
    //nehmen??
    node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(id2)+'"]');
    //Hier würde ein einfache id2-1 reichen und schon hast du eine variable gespart
    node.selectSingleNode('terminid').text:=IntToStr(id);
    //Bitte Lager mich ausserhalb der Schleife aus
    xmlDoc.save(frm_terminplaner.instpath + xmlfilename);
    frm_terminplaner.UpdateList;
    //Bis hier hin, denn bedenke die datei wird jedes mal für x Einträge geöffnet und dann gespeichert,
    //speichere lieber die Datei einmal finalerweise mit allen Änderungen , deshalb hinter das end
    //der for-Schleife damit
  end;
So hoffe dir erstmal geholfen zu haben

mfg phluphie

[Edit]Ausserdem was mir noch eingefallen ist, du gehst in der Schleife durch die gesamten Einträge, dabei reicht es wenn wir, sagen wir bei y und gelöschten Eintrag hätten du nur die einträge von y+1 bis Items.Count-1 nachbearbeiten müsstest.
Christian "phlux" Arndt
  Mit Zitat antworten Zitat
Akut-Programming

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

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

  Alt 8. Okt 2003, 10:18
Hi

Zitat:
//Warum fängt i2 bei 1 an zu zählen, meines wissens fängt man bei null an, es sei denn du fängst bei
//deinen XML Eintragen bei eins an zu zählen, was allerdings dann verwirrend wäre
Da mein erster Eintrag der XML die ID 1 hat. Im Prog würde es mir nichts nutzen die 0 mit zunehemen!

Zitat:
//Wo kommt das i her? Müsstest du hier nicht i2 //nehmen??
Wenn du meinen oberen Beitrag richtig angeschaut hättest, wär dir aufgefallen, das vor und nach der For Schleife "..." steht. Dies soll ansatzweise darstellen, das es davor und danach noch weiter geht. Klar ich hätte auch sonst wieviele Codezeilen posten können, wollt um Platz zu sparen aber nur die For Schleife posten, da es mir um diese geht.

Den Rest werd ich nach deinen Vorschlägen abändern - Also danke schonmal dafür. Vielleicht behebt das ja auch schon mein Problem.Wie gesagt, ich denke das es nur an der For Schleife liegen kann.

Ciao
Akut-Programming
be cool, be hot ... just be
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

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 02:18 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