Einzelnen Beitrag anzeigen

brose

Registriert seit: 20. Mai 2007
14 Beiträge
 
#1

Dateizugriffsproblem mit Apache-Server (savetofile )

  Alt 20. Mai 2007, 19:54
Guten Abend zusammen,

mein Programm kommuniziert über die serielle Schnittstelle mit einer Gefahrenmeldeanlage. Die Daten werden aufbereitet, angezeigt usw., in ein Memofeld eingetragen und sollen über die folgende Prozedur in eine Datei gespeichert werden. Das ganze wiederholt sich ca. alle 2 Sek. (Programm fragt ab). Diese Datei befindet sich in dem freigegebenen Ordner eines Apache-Servers. Über Intranet und MS-IE kann man sich die Datei (die dann im wesentlichen dem Memo-Feld entspricht) anschauen und so den Zustand erfahren.

Delphi-Quellcode:
procedure TForm1.Exportieren;
var str: TStrings;
i : integer;
begin
   str := TStringlist.create;
   str.loadfromfile('header.html');
   str.add('<font face="Verdana" size="2">');
   str.add('[b]'+datetostr(now)+ ' - ' + timetostr(now) + '[/b]
');
   for i := 1 to 8 do if ((bereichaktiv[i])AND(bereich_text[i] <> '')) then str.add(bereich_text[i]+': '+zustandstext(bereichszustand[i])+'
') else if bereichaktiv[i] then str.add('Bereich '+inttostr(i)+': '+zustandstext(bereichszustand[i])+'
');
   str.add('
');
   for i := 0 to memo1.lines.count - 1 do str.add(memo1.lines[i]+'
');
   str.add('</td></tr></table></body></html>');
   str.savetofile(serverpfad + 'meldungen.html');
   str.free;
end;
Die Html-Datei hat im Header einen Reload-Eintrag, sodass sie alle 2 Sek. automatisch neu geladen wird. Läuft das nun eine gewisse Zeit, kommt es zu der Situation, an der wahrscheinlich Zugriff und Speichervorgang gleichzeitig geschehen, sodass es einen Fehler gibt und das Programm abstürzt (windows-Meldung "sowieso.exe hat ein Problem festgestellt und muss beendet werden....").


So ähnlich werden auch die Ereignisse (und die empfangenen Daten für Debug-Zwecke) in PRotokolldateien abgespeichert (so ähnlich = stringlist und savetofile). Auch hier stürzt das Programm meistens ab, wenn ich die Datei mit dem Texteditor aus dem Explorer heraus öffne.

Wie kann ich das Problem lösen??

Vielen Dank schonmal.

Gruß
Sebastian
  Mit Zitat antworten Zitat