Seite 2 von 2
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 27.10.2017 16:27
von ts-soft
Es sollte noch darauf hingewiesen werden, das der *buffer in Procedure FileGetDACL(sFilename.s) bei Erfolg auch freigegeben wird, jedenfalls wenn PB noch länger läuft und die Procedure mehrmals aufgerufen wird. Kann mir nicht vorstellen, das die API das von alleine macht.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 27.10.2017 18:15
von GPI
Nino hat geschrieben:Das habe ich auch überlegt.

Dann muss allerdings der komplette Dateiinhalt im Speicher gehalten werden und ich dachte, dass das bei großen Dateien zu Problemen führen kann. Oder kann ich mich darauf verlassen, dass das Betriebssystem sich darum kümmert (und bei Bedarf Inhalte in die Swap-Datei auslagert)?
nö, wozu. Temp-Daten zum lesen öffnen, finale datei zum schreiben - und gleichzeitig lesen und schreiben. zum schluss die Temp löschen
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 27.10.2017 18:43
von Nino
GPI hat geschrieben:Temp-Daten zum lesen öffnen, finale datei zum schreiben - und gleichzeitig lesen und schreiben. zum schluss die Temp löschen
Nicht jede Datei wird geändert. Das ist vorher nicht bekannt. Erst während das Programm eine Ursprungsdatei liest, stellt es fest ob darin etwas ist was geändert werden soll.
Deshalb mache ich es so: Temp-Daten zum Schreiben öffnen, Ursprungsdatei zum Lesen. Wenn nichts geändert wurde, die Temp-Datei löschen. Ansonsten und wenn kein Fehler aufgetreten ist, die Temp-Datei umbenennen. So wird die Ursprungsdatei nur verändert wenn es nötig ist, und wenn zuvor alles gut gegangen ist.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 27.10.2017 22:05
von helpy
Sind die HTML-Dateien wirklich so groß, dass diese nicht in den Arbeitsspeicher geladen werden können?
Das kann ich mir nicht vorstellen!
HTML-Dateien, die ein paar MByte groß sind ... da braucht das Rendering im Browser ja schon einige Zeit.
"ein paar MByte" können doch leicht in den Arbeitsspeicher geladen werden.
Und sind die HTML-Dateien wirklich so groß, dass das nicht geht, dann sind diese meiner Ansicht nach auch zu groß für einen Browser.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 27.10.2017 23:39
von Nino
helpy hat geschrieben:Sind die HTML-Dateien wirklich so groß, dass diese nicht in den Arbeitsspeicher geladen werden können?
Das kann ich mir nicht vorstellen!
Nein, die HTML-Dateien sind nicht so groß.
Das Problem ist halt zufällig jetzt bei diesem Programm aufgetreten. Demnächst werde ich vor der gleichen Situation stehen bei einem Programm, welches Textdateien bearbeitet, von denen jede eine Größe von mehreren Gigabyte haben kann.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 28.10.2017 13:14
von #NULL
..Dann muss allerdings der komplette Dateiinhalt im Speicher gehalten werden ..
wie NicTheQuick und GPI bereits gesagt haben kannst du entweder:
- Original-Datei nach und nach einlesen, und dabei samt Aenderungen in die Temp-Datei schreiben.
- dann statt die Original-Datei zu ersetzen den Inhalt der Temp-Datei nach und nach zurueckschreiben in die Original-Datei ohne diese neu zu erstellen.
Oder du kopierst die Original-Datei vor einfach, liest von der Kopie und schreibst samt Aaenderungen den Inhalt neu in die Original-Datei.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 29.10.2017 11:11
von mk-soft
Dafür gibt es doch unter Windows einen Ordner auf den alle Benutzer zugreifen können.
Code: Alles auswählen
Debug GetUserDirectory(#PB_Directory_AllUserData) + "MyProgram\"
Damit sollte es keine Probleme mit der Berechtigung geben...
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 29.10.2017 15:15
von Nino
mk-soft hat geschrieben:Dafür gibt es doch unter Windows einen Ordner auf den alle Benutzer zugreifen können.
Code: Alles auswählen
Debug GetUserDirectory(#PB_Directory_AllUserData) + "MyProgram\"
Damit sollte es keine Probleme mit der Berechtigung geben...
Ja. Wenn man allerdings die temporäre Datei dort erstellt, so kann es sein dass sie sich auf einem anderen Laufwerk befindet als die Ursprungsdatei. In dem Fall muss sie anschließend
kopiert werden, was länger dauert als verschieben auf dem selben Laufwerk.
Meine Lösung, die temporäre Datei im selben Verzeichnis wie die Ursprungsdatei zu erstellen, ist daher besser -- außer wenn auf diesem Laufwerk kein Platz mehr für die temporäre Datei ist. Und in dem Fall dass der Platz knapp ist, würde GetUserDirectory(#PB_Directory_AllUserData) auch nur dann einen Vorteil bieten, wenn es nicht auch auf dem selben Laufwerk ist.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 29.10.2017 15:49
von GPI
Wenn du gigabytegroße Dateien hast: Falls Temp auf einen anderen Laufwerk ist, muss PB das eben auch kopieren. Das wird dauern.
Klüger wäre es einfach in Verzeichnis der Original-Datei eine Temp-Datei zu erstellen und je nach bedarf original oder TEMP beibehalten. Dann gibt es solche Probleme schlicht nicht.
Re: NTFS-Zugriffsrechte und temporäre Dateien
Verfasst: 29.10.2017 16:01
von Nino
GPI hat geschrieben:Wenn du gigabytegroße Dateien hast: Falls Temp auf einen anderen Laufwerk ist, muss PB das eben auch kopieren. Das wird dauern.
Klüger wäre es einfach in Verzeichnis der Original-Datei eine Temp-Datei zu erstellen und je nach bedarf original oder TEMP beibehalten. Dann gibt es solche Probleme schlicht nicht.
Ich stimme Dir voll und ganz zu. Und genau das mache ich wie gesagt jetzt ja auch, nachdem ich diese Erfahrung mit
GetTemporaryDirectory() gemacht habe.
Also nochmal für alle eiligen Leser: Das Problem ist gelöst.
