Timingprobleme mit Collections in umfangreichen Dokumenten

Dieses Problem bezieht sich eventuell nur auf HTML-Dateien!

Dateien sicher öffnen mit IsLoading und IsLoadingImages

Nach dem Laden umfangreicher Dokumente sollte in einem Makro mittels der Dokument-Eigenschaften IsLoading und IsLoadingImages überprüft werden, wann das Laden wirklich abgeschlossen ist.

Achtung! IsLoading und IsLoadingImages sind wahr, solange die Datei am Laden ist. Erst wenn beide False sind, ist der Ladevorgang abgeschlossen. Diese Logik hat schon diverse SD-Mitarbeiter selber verwirrt: selbst die Handbuchschreiber meinten, im folgenden Beispiel müsse die Bedingung mit And logisch verknüpft werden...

Sub SecureLoad(FileAndPath$)
   Dim myDoc as Object
   myDoc = Documents.open(FileAndPath$,,,)
   do while myDoc.IsLoading or doc.IsLoadingImages
   loop
End Sub

Was nach dem Öffnen kommt...

Leider kann damit nur der eigentliche Ladevorgang überprüft werden. Doch offenbar findet danach, also wenn alle Daten geladen sind, noch eine Initialisierung statt, deren Dauer nicht überprüft werden kann. Wird nun vor Ablauf dieser Frist etwa auf Collections (z.B. über JumpToURL() oder Graphics.Item()) zugegegriffen, so kann es vorkommen, dass nicht alle Elemente dieser Sammlung berücksichtigt werden, da sie zum Zeitpunkt des Aufrufes vom SO4 noch nicht erkannt sind. In obigem Beispiel würden also u.U. einige Hyperlinks «vergessen».

Workaround (?): Dieses Problem (und zahlreiche ähnliche) konnte ich bisher erst entschärfen, indem ich nach obigem Ladevorgang noch ein Wait() mit entsprechendem Parameter ausführte. Das ist eine ziemlich schlechte Lösung, doch sie half, das Hindernis zu umgehen...

Meine einleitende Bemerkung, dass dieses Problem eventuell nur auf HTML-Dateien zutreffen beruht einerseits auf Erfahrung, andererseits auf der Vermutung, dass solche Informationen in den SO-eigenen Dateiformaten mit abgespeichert werden. Ein langes HTML-Dokument muss aber nach dem Laden auch erst einmal interpretiert werden.



Letzte Änderung: 19.03.98
Copyright ©1998 by Michael Herger