![]() |
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:
|
Re: In XML schreiben, nachdem Meldung angezeigt!
Hey, es klappt, zumindest das er zum passenden Termin das x setzt! :mrgreen: Aber ich kriegs nich hin, das die Meldung erst zum Terminbegin kommt!? :oops:
|
Re: In XML schreiben, nachdem Meldung angezeigt!
Funktionierte meine (ungetesteter) Code nicht?
Wann kommt den jetzt die Meldung? |
Re: In XML schreiben, nachdem Meldung angezeigt!
Yo dein Code funzte!! :dancer: Die Meldung kommt jetzt sofort nach speichern des Termins (zumindest wenn der Termin für aktuellen Tag ist), da ja
Delphi-Quellcode:
die eingegebene Zeit gößer als die aktuelle ist. Nur das müsste ja eigentlich
... >=Time)
Delphi-Quellcode:
sein, nur dat funzt nich!
... =Time)
|
Re: In XML schreiben, nachdem Meldung angezeigt!
= geht nicht!!!!
Das habe ich dir doch schon erklärt warum das eh nicht gut ist. Der Timer läuft "unregelmäßig". Und so kommt auf jeden Fall 'ne Meldung! Auch wenn der Timer die Minute mal "überspringen" sollte. Das die Meldung nur einmal kommt, hast du doch jetzt durch die Variable in der XML Datei rausbekommen. Wo liegt also dein Problem? |
Re: In XML schreiben, nachdem Meldung angezeigt!
Yo klar, die Meldung kommt nur noch einmal!! Un nu ne eigentlich easy Lösung meines Vaters... ich soll doch einfach mal
Delphi-Quellcode:
durch
>=Time)
Delphi-Quellcode:
ersetzen. Den Timerinterval auf 10 gestellt und schon funzt es als sei´s
<=Time)
Delphi-Quellcode:
:mrgreen:
=Time)
|
Re: In XML schreiben, nachdem Meldung angezeigt!
<=?
Dann würde das doch bedeuten, dass, wenn der Termin am 10.9.03 16:00 Uhr ist, der schon am 10.9.03 0:01 Uhr die Meldung bringt!!! Mit dem Interval, das halte ich auch für ne schlechte Lösung, da so der Code viel öfter ausgeführt wird, als notwendig!! |
Re: In XML schreiben, nachdem Meldung angezeigt!
Frag mich nich :mrgreen: ich habs n bissl getestet, bis jetzt is nüx unvorhergesehenes passiert. :lol:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:00 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