procedure TForm1.N3Click(Sender: TObject);
var
i, j: word;
begin
i:= 1;
while StringGrid1.Cells[0, i] <> '' do
begin
Setlength(mas, i);
mas[i - 1].Familiya:= StringGrid1.Cells[0, i];
mas[i - 1].zarplata:= StrToFloat(StringGrid1.Cells[1, i]);
inc(i);
end;
dec(i, 2);
AssignFile(FileData, 'stringdrid.dat');
Rewrite(FileData);
for j:= 0 to i do
Write(FileData, mas[j]);
CloseFile(FileData);
end;
procedure TForm1.N4Click(Sender: TObject);
var
i, j: integer;
begin
i:= 0;
AssignFile(FileData, 'stringdrid.dat');
Reset(FileData);
while not eof(FileData) do
begin
inc(i);
SetLength(mas, i);
Read(FileData, mas[i - 1]);
end;
CloseFile(FileData);
j:= i;
for i:= 0 to j - 1 do
begin
StringGrid1.Cells[0, i + 1]:= mas[i].Familiya;
StringGrid1.Cells[1, i + 1]:= FloatToStr(mas[i].Zarplata);
end;
end;
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Grids, StdCtrls, ExtCtrls, ComCtrls;
type sotrudnik = record
Familiya: string[30];
Zarplata: real;
end;
massiv = array of sotrudnik;
fl = File Of sotrudnik;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Panel1: TPanel;
ListBox1: TListBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StringGrid1: TStringGrid;
OpenDialog2: TOpenDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
StatusBar1: TStatusBar;
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FileData: fl;
mas: massiv;
n: word;
Form1: TForm1;
implementation
{$R *.dfm}
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Grids, StdCtrls, ExtCtrls, ComCtrls;
type sotrudnik = record
Familiya: string[30];
Zarplata: real;
end;
massiv = array of sotrudnik;
fl = File Of sotrudnik;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
Panel1: TPanel;
ListBox1: TListBox;
Edit1: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
StringGrid1: TStringGrid;
OpenDialog2: TOpenDialog;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
StatusBar1: TStatusBar;
procedure FormCreate(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
FileData: fl;
mas: massiv;
n: word;
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
StringGrid1.Cells[0,0]:='Фамилия';
StringGrid1.Cells[1,0]:='Зарплата';
ListBox1.Clear;
Label1.Caption:='Средний заработок';
Label2.Caption:='Сведения о сотрудниках';
Label3.Caption:='Cписок сотрудников';
end;
procedure TForm1.N2Click(Sender: TObject);
var i:integer;
begin
i:= 1;
setlength(mas, 1);
while StringGrid1.Cells[0,i] <> '' do
begin
mas[i - 1].Familiya:= StringGrid1.Cells[0, i];
mas[i - 1].zarplata:= StrToFloat(StringGrid1.Cells[1, i]);
inc(i);
Setlength(mas, i);
end;
n:= i - 1;
end;
procedure TForm1.N3Click(Sender: TObject);
var
i, j: word;
begin
i:= 1;
while StringGrid1.Cells[0, i] <> '' do
begin
Setlength(mas, i);
mas[i - 1].Familiya:= StringGrid1.Cells[0, i];
mas[i - 1].zarplata:= StrToFloat(StringGrid1.Cells[1, i]);
inc(i);
end;
dec(i, 2);
n:= i + 1;
AssignFile(FileData, 'stringdrid.dat');
Rewrite(FileData);
for j:= 0 to i do
Write(FileData, mas[j]);
CloseFile(FileData);
end;
function Count(var s: massiv): real;
var
i: integer;
p: real;
begin
p:= 0;
for i:= 0 to n - 1 do
with s[i] do
p:= p + s[i].Zarplata;
result:= p / n;
end;
procedure TForm1.N6Click(Sender: TObject);
var
i: Integer;
k: real;
list: TStringList;
begin
k:= count(mas);
Edit1.Text:= FloattostrF(k, ffFixed, 8, 4);
ListBox1.Clear;
List:= TStringList.Create;
for i:= 1 to StringGrid1.RowCount do
if StringGrid1.Cells[0, i] <> '' then
List.Add(StringGrid1.Cells[0, i]);
List.Sort;
ListBox1.Items.AddStrings(List);
List.Free;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.N4Click(Sender: TObject);
var
i: integer;
begin
i:= 0;
AssignFile(FileData, 'stringdrid.dat');
Reset(FileData);
while not eof(FileData) do
begin
inc(i);
SetLength(mas, i);
Read(FileData, mas[i - 1]);
end;
CloseFile(FileData);
n:= i;
StringGriD1.Font.Color:= clGreen;
for i:= 0 to n - 1 do
begin
StringGrid1.Cells[0, i + 1]:= mas[i].Familiya;
StringGrid1.Cells[1, i + 1]:= FloatToStr(mas[i].Zarplata);
end;
StatusBar1.Panels[0].Text:= 'n = ' + IntToStr(n);
StatusBar1.Panels[1].Text:= ExtractFilePath(ParamStr(0)) + 'stringdrid.dat';
end;
end.
procedure TForm1.N3Click(Sender: TObject); // Процедура сохранения сетки в файл
var
i, j: word;
begin
i:= 1;
while StringGrid1.Cells[0, i] <> '' do
begin // Запись данных о сотрудниках в массив
Setlength(mas, i);
mas[i - 1].Familiya:= StringGrid1.Cells[0, i];
mas[i - 1].zarplata:= StrToFloat(StringGrid1.Cells[1, i]);
inc(i);
end;
dec(i, 2);
n:= i + 1;
AssignFile(FileData, 'stringdrid.dat'); // Связали файловую переменную с файлом
Rewrite(FileData); // Открыли файл для перезаписи
for j:= 0 to i do
Write(FileData, mas[j]); // Записали данные в файл
CloseFile(FileData); // Закрыли файл
end;
procedure TForm1.N4Click(Sender: TObject); // Процедура чтения сетки из файла
var
i: integer;
begin
i:= 0;
If not FileExists('stringdrid.dat') then // Проверяем существует или нет файл
begin
StatusBar1.Panels[1].Text:= 'Файла ' + ExtractFilePath(ParamStr(0)) + 'stringdrid.dat' + ' не существует'; // Выводим путь до файла
exit;
end;
AssignFile(FileData, 'stringdrid.dat'); // Связали файловую переменную с файлом
Reset(FileData); // Встали на начало файла
while not eof(FileData) do
begin // Делаем пока не дойдём до конца файла
inc(i);
SetLength(mas, i); // Устанавливаем новый размер массива
Read(FileData, mas[i - 1]); // Читаем данные из файла в массив
end;
CloseFile(FileData); // Закрыли файл
n:= i;
StringGriD1.Font.Color:= clGreen; // Сделали цвет шрифта сетки зелённым
for i:= 0 to n - 1 do
begin // Заполняем сетку данными
StringGrid1.Cells[0, i + 1]:= mas[i].Familiya;
StringGrid1.Cells[1, i + 1]:= FloatToStr(mas[i].Zarplata);
end;
StatusBar1.Panels[0].Text:= 'n = ' + IntToStr(n); // Выводим информацию количестве записей в сетке
StatusBar1.Panels[1].Text:= ExtractFilePath(ParamStr(0)) + 'stringdrid.dat'; // Выводим путь до файла
end;
type sotrudnik = record
Familiya: string[30];
Zarplata: real;
end;
massiv = array of sotrudnik;
fl = File Of sotrudnik;
private
{ Private declarations }
public
{ Public declarations }
end;
var
FileData: fl;
mas: massiv;
n: word;
Form1: TForm1;
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.