FSO: Warten bis Datei geschrieben wurde

Ortwin1st

Mitglied
Hi,

hab mittels JScript und ActiveX ein kleines Script geschrieben, dass mir Daten in eine Datei schreibt. Auslesen und Einlesen funktioniert alles wunderbar.

Einziges Problem: Ich möchte gerne wissen, wann die Datei fertig geschrieben wurde.
Ich hatte mir überlegt, vor und nach dem Schreiben der Datei eine Eigenschaft abzufragen, die sich zwangsläufig ändert. Wie z.B. "Size" oder "DateLastModified".
Der Sinn ist, ich kann die Auswirkungen nicht abschätzen, was passiert, wenn der User zu oft auf "Speichern" klickt.

Nachdem der Textstream fertig geschrieben worden ist, soll der Cursor zur Sanduhr werden und es soll eine Schleife durchlaufen werden, die solange läuft, bis die Eigenschaften wie z.B. Size sich unterscheiden. Danach soll der Cursor wieder normal sein.
Das Problem an der Eigenschaft Size ist, dass wenn sich kein Byte der Datei ändert, kann es zu einer Endlosschleife kommen. Weiterhin möchte ich sowieso eine Sicherheit einbauen, das es nicht zur Endlosschleife kommt. DateLastModified scheint besser geeignet sein, jedoch auch nicht wirklich, da scheinbar sich DateLastModified schon BEVOR ändert, ehe die Datei fertig geschrieben wurde.

Diese Lösungen die ich mir ausgedacht habe, sind nicht wirklich valid und habe Zweifel an der Umsetzung. Hat jemand vielleicht eine Idee?

Meine Referenz: http://www.html-world.de/program/fso_8.php

Eine Notlösung wäre ein Timer laufen zu lassen, aber das ist mir zu Wischi-Waschi.

Gruß

Ortwin
 
Zuletzt bearbeitet:
Mmmh...wer soll denn darauf warten?

JS arbeitet idR. synchron....Anweisungen werden nacheinander abgearbeitet nicht parallel.
Du kannst also davon ausgehen, dass bei der nächsten Anweisung nach dem Schreiben der Schreibvorgang beendet ist.

Wenn es dir nur um den Cursor geht, dann sollte folgender Ablauf demnach ausreichen:

1:cursor auf wait setzen
2.Datei beschreiben
3.cursor auf default setzen
 
Das habe ich mir schon gedacht das JS nicht warten wird. Sonst würde es auch in einem anderen Modul nicht funktionieren, dass beliebig viele Intervalle gestartet werden und laufen.

Der Schreibvorgang geht viel zu schnell (nur ein paar kB), als das Anzeigen der Sanduhr was bringen würde. Ich denke mir, dass das Betriebssystem das endgültige Schreiben der Datei auf der Festplatte übernimmt und ActiveX nur die Schnittstelle darstellt.
Aber hätte sein können, das es eine Lösung gibt.

Ein Bug, den ich entdeckt habe, ist beispielsweise folgender:
Beim Laden der Seite wird jedesmal der Dateiinhalt neu geladen. Wird sofort nach dem Speichervorgang die Seite aktualisiert, wird der alte Dateiinhalt statt des neu gespeicherten geladen.
 

Neue Beiträge

Zurück