Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Fehlerfreier Zugriff auf Datei (https://www.delphipraxis.net/24684-fehlerfreier-zugriff-auf-datei.html)

cyberrowdy72 24. Jun 2004 14:31


Fehlerfreier Zugriff auf Datei
 
Mein Programm startet ein anderes, welches wiederum eine Datei anlegt und dann ein paar Sekunden tausende Zeilen da reinschreibt. Auf eben diese Datei soll mein Programm zugreifen. Jedoch kommt immer eine Fehlermeldung weil der Code weiter ausgeführt wird obwohl die Datei noch nicht abgeschlossen, jedoch schon da ist --> FileExists fällt raus.
Ob eine Abfrage der Größenänderung der Datei erfolgreich ist weiß ich nicht, ansonsten fällt mir nur ein klassisches SLEEP() ein.

Gibts auch noch eine andere Möglichkeit?

alcaeus 24. Jun 2004 14:33

Re: Fehlerfreier Zugriff auf Datei
 
Löse das ganze über Messages:
Das Programm das gestartet wird, schickt nach Beenden der Schreiboperationen an das erste Programm eine Message. Erst nach Eintreffen der Message darf das erste Programm zugreifen.
Zu den Messages müsstest du hier eigentlich genug Infos finden.

Greetz
alcaeus

Ultimator 24. Jun 2004 14:34

Re: Fehlerfreier Zugriff auf Datei
 
Nimm delaydelay, dann friert dir die Anwendung nicht ein :wink:

cyberrowdy72 24. Jun 2004 14:36

Re: Fehlerfreier Zugriff auf Datei
 
Das würde schon funktionieren, aber das andere Programm wird im cmd ausgeführt, sodass ich da keine messages senden kann. Das andere Programm ist nicht von mir. Ein Handle würde möglicherweise zu Fehlern führen, da mehrere Instanzen offen sein können...
Das ist mein Problem :-?

Brüggendiek 24. Jun 2004 15:09

Re: Fehlerfreier Zugriff auf Datei
 
Hallo!

Zitat:

Zitat von cyberrowdy72
Mein Programm startet ein anderes

Womit startest Du das andere Programm?
Normalerweis wird ja ShellExecute benutzt - dann läuft das so gestartete Programm völlig unabhängig.
Wenn Du das Programm mit CreateProcess erzeugst, kann Dein Programm mit WaitForSingleObject auf die Beendigung des gestarteten Programms warten.

Das Ganze funktioniert natürlich nur, wenn das gestartete Programm sich auch beendet.

Ansonsten hilft nur, das Öffnen der Dateien in einer Schleife (mit Delay!) oder Timer-gesteuert zu versuchen und bei Erfolg die Datei bearbeiten.

Gruß

Dietmar Brüggendiek


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:20 Uhr.

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