AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Dateizugriffsproblem mit Apache-Server (savetofile )
Thema durchsuchen
Ansicht
Themen-Optionen

Dateizugriffsproblem mit Apache-Server (savetofile )

Ein Thema von brose · begonnen am 20. Mai 2007 · letzter Beitrag vom 20. Mai 2007
Antwort Antwort
brose

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

Dateizugriffsproblem mit Apache-Server (savetofile )

  Alt 20. Mai 2007, 20: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
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: Dateizugriffsproblem mit Apache-Server (savetofile )

  Alt 20. Mai 2007, 22:35
1. Möglichkeit:
Du prüfst in Deinem Delphiprogramm ab, ob die Datei im Zugriff ist oder nicht. Wenn die Datei im Zugriff ist, dann speichere die Werte beim nächsten Durchlauf.

2. Möglichkeit:
Du speicherst die Datei immer und fragst auf Deiner Intranet-Seite ab, ob es eine neue Datei gibt.

3. Möglichkeit:
Du erstellst hier in Delphi ein WEb-Interface, welches Dir beides machen kann. Es zeigt Dir die Sachen im Browser und speichert es. Damit gehst Du dem Konflikt aus dem Weg mit dem Speichern.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Dateizugriffsproblem mit Apache-Server (savetofile )

  Alt 20. Mai 2007, 22:37
schaut dir mal try-except an. Damit kann man Fehler behandeln.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
brose

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

Re: Dateizugriffsproblem mit Apache-Server (savetofile )

  Alt 20. Mai 2007, 23:32
Hallo,

danke für die Antworten.

Ich habe mich für RWarneckes erste Variante zusammen mit http://www.dsdt.info/tipps/?id=360 entschieden.

Falls die Datei belegt ist, wird in eine temp-Datei geschrieben. Mal sehen, wie sich die Sache entwickelt und ob es dem Praxistest standhält.

Gruß
Sebastian
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:49 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