Hallo Achim,
danke für Deinen Tipp. Ich habe mich nun an das Ereignis OnBeforeNavigate der Webbrowser-Kompo gehangen und dabei folgendes gemacht, um einigermassen sicherzustellen, dass ich herausbekommen kann, auf welcher Seite ich gerade bin:
Delphi-Quellcode:
if (TargetFrameName = '
main')
then
StatusBar1.Panels[0].Text:=ExtractFileName(
url);
if (TargetFrameName = '
main_left')
then
StatusBar1.Panels[1].Text:=ExtractFileName(
url);
if (TargetFrameName = '
main_right')
then
StatusBar1.Panels[2].Text:=ExtractFileName(
url);
Damit habe ich in der Statusbar im ersten Panel die TopSeite stehen, im zweiten den Namen des im linken Frame geladenen Files usw. Damit komme ich schon mal klar. Folgendes werde ich nun noch machen, um es sauber hinzubekommen. PageLoaded so hinzufügen wie von Dir angeregt.
Delphi-Quellcode:
if XML_List.CommaText <> XML_File_Is.CommaText then
if FirstRunOver and PageLoaded then
if StatusBar1.Panels[1].Text='lscore_left.xml' then
begin
UpdateNavyXML(MatchID,XML_List.text);
CreateHistoryMainXML;
end;
Darf ich noch fragen wie Du das mit dem Commatextvergleich gemeint hast? Die Listen sind einmal Privat und dann noch lokal und werden einfach verglichen, da sie sich nur ändern, wenn ein Livespiel beendet wird und der Navigationslink für eines der Spiele nicht mehr benötigt wird. Daher sollte dieser einfache Vergleich völlig ausreichen, danke ich.
Ich habe aber leider noch ein viel grösseres Problem, was nur inderekt was mit diesem Thread zu tun hat. Ich lese jede Sekunde alle bestimmten Dateien aus einem Ordner ein und schreibe diese in eine Globale Liste, wenn sich da was ändert wird eine Lokale Liste erstellt. Die Listen werden verglichen und so bekomme ich heraus, welche Datei sich verändert hat. Diese wird dann geparst und intern in ein
XML-FIle umgewandelt. Dieser Vorgang dauert ca. 200ms, also nicht so lange. Allerdings muss ich aus all diesen Dateien auch noch eine LiveSpiel-Navigation erstellen, was zur Folge hat, dass ich nochmals alle Dateien parsen muss und desweiteren muss ich Archivseiten erstellen, die Tagebasierte Archiveseiten hat, Tagesbasierte Navigationsseiten und alle historischen Spiele. Das Erstellen all dieser Seiten habe ich derzeit immer mit drin, sobald sich auch nur eine einzige Datei ändert.
Wenn ich 2-6 Dateien habe, geht das noch, aber aber 8 Dateien dauert es dann doch schon mal mehr als eine Minute, bis ich einen Punkt im Webbrowser aktualisiert bekomme, da er nur noch am rödeln ist und alle Dateien einliest, parst und den ganzen
XML-Kram erstellt und dass immerzu. Also habe ich mal die Archivseitenerstellung abgeklemmt und es bleibt flüssig. Wir haben heute mit dem Turnier angefangen und werden am Tagesende 16 Dateien haben. Also mal schauen.
Nun meine Frage: Wie kann ich es anstellen, dass ich trotzdem "des öfteren" die Historischen Archidateien erstellen lassen kann, ohne dass die Aktualisierung davon allzusehr eingeschränkt ist? Vielleicht sollte ich das vom DatenManager, der zur Zeit nur die Rohdaten an alle Empfänger verschickt schon im Vorfeld tun lassen, damit die Clients nur noch die fertigen Inhalte erhalten und nichts mehr selbst parsen müssen?! Oder lieber in Threads auslagern? Damit habe ich allerdings noch gar keine Erfahrungen machen dürfen. Hast Du / Habt Ihr noch Tipps?