![]() |
In XML schreiben, nachdem Meldung angezeigt!
Hi Leudz!!
Ich will nach dem anzeigen einer Message in ne XML Datei schreiben, nur schreibt er immer in den Eintrag vor dem Eintrag in dem ich eigentlich schreiben will. :? Kann sich das ma jemand angucken...
Delphi-Quellcode:
Das Programm sollte mit dem schreiben in die XML nicht warten, bis in der Meldung auf OK geklickt wurde, sondern wenn sie angezeigt wird.
procedure Tfrm_terminplaner_main.Timer2Timer(Sender: TObject);
var i: integer; node: IXMLDOMNode; newTermin, newSub: IXMLDOMNode; begin for i:=0 to lv_eintraege.Items.Count-1 do begin if (StrtoDate(lv_eintraege.Items[i].SubItems[1])=date) and (StrtoTime(lv_eintraege.Items[i].SubItems[2])>=time) and (xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(i)+'"]/AlertShowed').Text='_') then begin ShowMessage('Ihr Termin ('+lv_eintraege.Items[i].SubItems[0]+') beginnt!'); node := xmlDoc.documentElement.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(i)+'"]'); node.selectSingleNode('AlertShowed').text:='x'; xmlDoc.save(frm_terminplaner_main.instpath + xmlfilename); end; end; end; |
Re: In XML schreiben, nachdem Meldung angezeigt!
Zitat:
Geht das speichern nicht mit:
Delphi-Quellcode:
xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(i)+'"]/AlertShowed').Text:='x';
xmlDoc.save(frm_terminplaner_main.instpath + xmlfilename); |
Re: In XML schreiben, nachdem Meldung angezeigt!
Jud, jetzt wird es zwar zuerst gespeichert, und ich bekomm die Message auch nur noch einmal angezeigt. Nur schreibt er das 'x' in den Vorgänger Eintrag.
Bsp: Ich hab den Termin "TestTermin1" der beginnt am 08.09.2003 um 12:00 in der XML. Dann trage ich den Termin "TestTermin2" ein der am 09.09.2003 um 16:00 beginnt ein. :| Da bekomme ich sofort nach dem speichern die Message angezeigt mit dem Hinweis, das "TestTermin2" beginnt (obwohl es nich noch nicht 16:00 ist) und schreibt das 'x', das der Termin eigentlich schon angezeigt wurde, zu "TestTermin1". Sollte aber eigentlich zu "TestTermin2". :roll: |
Re: In XML schreiben, nachdem Meldung angezeigt!
Hast du beachtest, dass dei ID, die du übergibst 0 basiert ist und deine ID im XML auf 1 basiert?! Könnte es daran liegen?
|
Re: In XML schreiben, nachdem Meldung angezeigt!
Ne damit scheints nichts zu tun zu hamm, da er´s jetzt immer noch in den Vorgänger - Termin speichert.
Weißt du vielleicht auch, wie ich die Message minuten genau anzeigen kann, da ich sie durch
Delphi-Quellcode:
dann angezeigt kriege, wenn die eingegebene Zeit größer als die jetzige ist. Das sollte aber nicht so sein. Mit
...
and (StrtoTime(lv_eintraege.Items[i].SubItems[2])>=time) ...
Delphi-Quellcode:
Hat ers auch nich gemacht. Hab die ganze Sache in n Timer, damit es auch immer überprüft wird.
...
and (StrtoTime(lv_eintraege.Items[i].SubItems[2])=time) ... |
Re: In XML schreiben, nachdem Meldung angezeigt!
Dann schau nochmal nach wer dich auf die Idee mit dem >= gebracht hat. :mrgreen:
Das mußt du auch so machen, da der Timer wie damals gesagt und erklärt "Aussetzer" haben kann. Die erste TerminID hat doch in der XML Datei den Wert 1 (ausgehend von dem ScreenShot aus einem deiner anderen Postings), oder doch den Wert 0? |
Re: In XML schreiben, nachdem Meldung angezeigt!
@Tpercon: das kann man beliebig festlegen, dann es bei XML (AFAIK wohl gemerkt ;)) keine Art Index mit auto increment gibt (schön wär's).
Chris |
Re: In XML schreiben, nachdem Meldung angezeigt!
Ja, von dir habsch den!! :oops:
Na der erste Termin beginnt mit ID 1!! hab i jetzt auch auf 1 gesetzt ---> Kein Erfolg :roll: |
Re: In XML schreiben, nachdem Meldung angezeigt!
Dann ändere deinen Code mal folgendermaßen:
Delphi-Quellcode:
procedure Tfrm_terminplaner_main.Timer2Timer(Sender: TObject);
var i: integer; node: IXMLDOMNode; newTermin, newSub: IXMLDOMNode; begin for i:=0 to lv_eintraege.Items.Count-1 do begin if (StrtoDate(lv_eintraege.Items[i].SubItems[1])=date) and (StrtoTime(lv_eintraege.Items[i].SubItems[2])>=time) and (xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(i+1)+'"]/AlertShowed').Text='_') then begin xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(i+1)+'"]/AlertShowed').Text:='x'; xmlDoc.save(frm_terminplaner_main.instpath + xmlfilename); ShowMessage('Ihr Termin ('+lv_eintraege.Items[i].SubItems[0]+') beginnt!'); end; end; end; |
Re: In XML schreiben, nachdem Meldung angezeigt!
Leider passiert nichts! :cry:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz