Im Moment nutze ich die Komponenten Trivialftp zum senden von mehreren Dateien mit dem Prinzip:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| For i:=Files.Count-1 downto 0 do Begin If Pos('SETUP',Files.Strings[i])>0 then SettingFTP.Put('SETUP.ini','InstallierteSoftware.ini'); If Pos('Freigaben',Files.Strings[i])>0 then SettingFTP.Put('Host.ini','Einstellungen.ini'); If Pos('Webfilter',Files.Strings[i])>0 then SettingFTP.Put('WebFilter.ini','Webfilter.ini'); End; |
Beim Empfänger wird bei Übertragungsende (OnTransfercomplete) ein Timer aktiv, der versucht alle Dateien neu auszulesen um neue Einstellungen zu empfangen. Beim Ereignis (OnReadfile & OnWriteFile) wird der Timer deaktiviert um Zugriffsverletzungen auszuschließen.
Dennoch kommt es jedes Mal zu einem Fehler (Auf die Datei Webfilter.ini kann nicht zugegriffen werden, da ein anderer Prozess darauf zugreift)
Gibt es eine Möglichkeit zu prüfen ob die Datei gerade verwendet wird bzw. ankommende Dateien effektiver auszuwerten. Die Lösung mit dem Timer ist doch leider sehr unsauber. Oder kennt ihr noch eine andere zuverlässigere Methode Dateien zu versenden?
Es melden sich mehrere Clients an meinem Hauptprogramm an und jeder Client will die neusten Einstellungen empfangen. Dabei sollte garantiert sein, dass jeder diese auch bekommt. Evtl. könnte man auch eine Warteschleife integrieren?
Könnt ihr mir da weiterhelfen?
Danke