Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi In XML schreiben, nachdem Meldung angezeigt! (https://www.delphipraxis.net/8645-xml-schreiben-nachdem-meldung-angezeigt.html)

Akut-Programming 9. Sep 2003 14:25


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:
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;
Das Programm sollte mit dem schreiben in die XML nicht warten, bis in der Meldung auf OK geklickt wurde, sondern wenn sie angezeigt wird.

Tpercon 9. Sep 2003 14:33

Re: In XML schreiben, nachdem Meldung angezeigt!
 
Zitat:

Zitat von Akut-Programming
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:
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;
Das Programm sollte mit dem schreiben in die XML nicht warten, bis in der Meldung auf OK geklickt wurde, sondern wenn sie angezeigt wird.

Dann schreibe doch die ShowMessage Zeile mal hinter dem .save! Dann wird es auch zuerst gespeichert.
Geht das speichern nicht mit:
Delphi-Quellcode:
xmlDoc.selectSingleNode('/PlanView/termin[terminid="'+IntToStr(i)+'"]/AlertShowed').Text:='x';
xmlDoc.save(frm_terminplaner_main.instpath + xmlfilename);

Akut-Programming 9. Sep 2003 14:54

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:

Tpercon 9. Sep 2003 15:03

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?

Akut-Programming 9. Sep 2003 15:20

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:
...
and (StrtoTime(lv_eintraege.Items[i].SubItems[2])>=time)
...
dann angezeigt kriege, wenn die eingegebene Zeit größer als die jetzige ist. Das sollte aber nicht so sein. Mit
Delphi-Quellcode:
...
and (StrtoTime(lv_eintraege.Items[i].SubItems[2])=time)
...
Hat ers auch nich gemacht. Hab die ganze Sache in n Timer, damit es auch immer überprüft wird.

Tpercon 9. Sep 2003 15:24

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?

CalganX 9. Sep 2003 15:25

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

Akut-Programming 9. Sep 2003 15:27

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:

Tpercon 9. Sep 2003 15:28

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;

Akut-Programming 9. Sep 2003 17:35

Re: In XML schreiben, nachdem Meldung angezeigt!
 
Leider passiert nichts! :cry:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:38 Uhr.
Seite 1 von 2  1 2      

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