Entwickler-Ecke

Dateizugriff - Doppelter Schreibvorgang


Adrian - Do 10.07.03 15:27
Titel: Doppelter Schreibvorgang
Hallo zusammen!

Die folgende Prozedur wird durch einen Timer alle 5 Sekunden ausgelöst:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
procedure TForm1.Speichern(Sender: TObject);
var
  i, n : Integer;
  Gut : Boolean;
begin
  Gut:=False;// Damit ggfs. gleichlautende Datei überschrieben wird
  Zeile[z]:=DateToStr(Date)+#9+TimeToStr(Time)+#9;
  for i:=1 to 7 do
  begin
    Zeile[z]:=Zeile[z]+format('%5.2f',[Temperatur[i]])+#9;
  end// von i:=1 to 7
  inc(z,1);
  if z=13 then
  begin
    Append(TDatei);
    for n:=1 to 12 do
    begin
      Writeln(TDatei,Zeile[n]);
    end;// von n:=1
    CloseFile(TDatei);
// Sicherung der Meßwertdatei    
    CopyFile(PChar(OrgDatei),PChar(BakDatei),Gut);
  end;// von z=13
  if z=13 then z:=1;
end;

In unregelmäßigen Abständen wird ein doppelter Schreibvorgang ausgelöst, d.h. zwei Zeilen mit gleichem Inhalt - die Länge liegt bei weniger als 80 Zeichen - stehen unmittelbar hintereinander. Das Problem tritt bei mehreren PCs unterschiedlicher Leistungfähigkeit auf. Hat jemand einen Hinweis, woran das liegen kann?

Gruß,

Adrian


Moritz M. - Do 10.07.03 19:27

Du könntest es versuchen, in dem du nach CloseFile ein Application.ProcessMessages reinhaust.