WeekRec.TroubleSignals :=

WeekRec.TroubleSignals + TroubleSignals;
end;
WriteLn (PrintText);
{ пустая строка между днями } end;

WriteLn (PrintText); { дополнительная пустая строка перед главными итогами } { печать недельных итогов ) with WeekRec do

WriteLn (PrintText, 'Week Totals' :11, ' NumberOfSignals:10 , OperatorSignals:10, AlarmSignals:10, TroubleSignals:10) ; System.Close (PrintText);
end;

procedure TAlarmStats.btnExportClick(Sender: TObject); var Rec : Almttats AlarmStatsRecord, Day,

Hour : Integer; OutputFile : System.Text;
begin
OpenTheFile ;

{ создание выходного файла }

System.Assign (OutputFile, OutputFileName) ;
Rewrite (OutputFile);

( для каждого дня }

for Day := 0 to 6 do begin { и каждого часа }

for Hour := 0 to 23 do begin { получение записи }

Almstats.Lookup (AlarmFile, Day, Hour, Rec); wi th Rec do

(и вывод ее в формате разделенных запятыми значений} WriteLn (OutputFile,

m, Day,'»,'f '"',Time,

'"',NumberOfSignals,'",', '"',AlarmSignals, ' ",' , '"',TroubleSignals,'",', '"',OperatorSignals,'"');
end;
end;
System.Close (OutputFile);
end;
procedure TAlarmStats.btnOuitClick(Sender: TObject);
begin
Close;
end;

Прежде, чем мы начнем свое рассмотрение этого кода, нам необходимо добавить к коду формы еще несколько составляющих. Сперва добавьте следующие объявления:

{ Приватные объявлиния } AlarmFile : AlarmFiletype; FileleOpen : Boolean; procedura OpanTheFile; procedure CloseTheFile;

K разделу private определения TAlarmStats class. Затем добавьте эти определения констант непосредственно над опрелением dass формы:

const

TextFilenane = 'ALMSTATS.TXT'; OutputFilename = 'ALMSTATS CSV, StatsFilenama = 'ALMSTATS DAT',

И наконец, создайте обработчики событий OnCreate и OnClose для формы и введите код, приведенный в Листинге 11.4.

ЛИСТИНГ 11.4 Процедуры управления файлами OnCreate и OnClose программы Stats

procedurе TAlarmStats.FormCreate(Sender: TObject);
begin
FilelsOpen := Falsa, end;
procedure TAlarmStats.FormClose(Sender: TObject;
var Action: TCloeeAction);
begin
CloseTheFile;
end;
procedure TAlarmStats.OpenTheFile;
begin
if not FilelsOpen then begin
Almstats OpenAlarmFilo (AlarmFile, StatsFilename);
FilelsOpen : True;
end;
end;
procedure TAlarmStats CloseTheFile;
begin
if FilelsOpen then begin
Almstats CloseAlarmFile (AlarmFile);
FilelsOpen := Falsa;
end;
end;

И еще только одна вещь: добавьте Printers и Almstats к списку модулей в операторе uses формы, а затем нажмите F2, чтобы сохранить свою работу. Теперь мы можем поговорить о программе. Не пытайтесь протранслировать программу, так как вы получите сообщение об ошибке, когда она попытается найти модуль Almstats.

Как она работает

Первое, на что вы обратите внимание в Листингах И 3 и 11.4 - это, что они никогда не обращаются к файлу! Все обращения к файлу выполняются посредством подпрограмм из модуля Almstats, который мы еще не написали. Однако, мы занем, чего хотим от модуля Almstats: нам нужно, чтобы он инкапсулировал все манипуляции с файлом.

Almstats содержит структуру AlaimStatsRecord, определение type, названное AlarmFi-ІеТуре, и следующие процедуры:


⇐ Предыдущая страница| |Следующая страница ⇒

Программирование в среде Delphi



Новости за месяц

  • Декабрь
    2021
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс
  • 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
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31