Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 13.05.2009, 16:25
vla9240 vla9240 вне форума
Прохожий
 
Регистрация: 13.05.2009
Сообщения: 1
Репутация: 10
По умолчанию Ошибки в задаче Delphi

Помогите, пожалуйста, разобраться с ошибками в задаче. Задача: заданы сведения о сотрудниках организации- фамилия, заработная плата. Количество сведений любое.Сохранить сведения в файле. Прочитать из файла по запросу и определить среднюю заработную плату всех сотрудников организации. Предусмотреть дополнение сведений и их исправление. Задачу вцелом я решил, но немогу разобраться с замечаниями преподавателя (коментарии красным шрифтом).
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, Grids, ComCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    StatusBar1: TStatusBar;
    StringGrid1: TStringGrid;
    ListBox1: TListBox;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    MainMenu1: TMainMenu;
    OpenDialog1: TOpenDialog;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    N6: TMenuItem;
    N7: TMenuItem;
    N8: TMenuItem;
    procedure FormCreate(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure N6Click(Sender: TObject);
    procedure N7Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N4Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

Type
    str=string[20];
    sotrud=record
        fam_name:str;
        zarplata:real;
        end;
        massiv=array of sotrud;
var
  Form1: TForm1;
    mas:massiv;
    n:integer;
implementation

{$R *.dfm}
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.FormCreate(Sender: TObject);
begin
    StringGrid1.Cells[0,0]:='Familii';
    StringGrid1.Cells[1,0]:='Zarabotna plata';
    Edit1.Text:=' ';
    ListBox1.Clear;
    N2.Enabled:=False;
end;

procedure TForm1.N5Click(Sender: TObject);// Сохранение данных в памяти
var i:integer;
begin
     i:=1;
     setlength(mas,1);
     while StringGrid1.Cells[0,i]<>'' do
   begin
        mas[i-1].fam_name:=StringGrid1.Cells[0,i];
        mas[i-1].zarplata:=StrToInt(StringGrid1.Cells[1,i]);
        i:=i+1;
        Setlength(mas,i);
    end;
     n:=i-1;
     statusBar1.Panels.Items[0].Text:='n ='+ IntToStr(n);
end;

procedure TForm1.N6Click(Sender: TObject);// запись в файл
var i:integer;
    f:file of sotrud;

begin
     assignfile(f,'sotrud.dat');
     rewrite(f);
     For i:=0 to Length(mas)-1 do
     write(f,mas[i]);
     closefile(f);
     MessageDlg('Zapisano v file', mtinformation,[mbOK],0);
     N2.Enabled:=True;
end;

procedure TForm1.N7Click(Sender: TObject); //средний заработок
var k:real;
begin
    k:=count(mas);
    Edit1.Text:=FloatToStrF(k,ffFixed,4,4);
end;

procedure TForm1.N2Click(Sender: TObject);
var i:integer;
    f:file of sotrud; // У вас такой файл работать не будет! (а почему?)
     s:string;
begin
    if OpenDialog1.Execute then
    AssignFile(f,OpenDialog1.FileName)
    else
      begin
         MessageDlg('file ne naiden', mtinformation,[mbOK],0);
      exit;
      end;
      i:=0;
      reset(f);
      SetLength(mas,FileSize(f));
      While Not Eof(f) Do
      begin
        read(f,mas[i]); // Читаем массив из файла!
        inc(i);
       end;
       CloseFile(f);
      for i:=1 to StringGrid1.RowCount-1 do // Зачем из таблицы читаете? Надо было список по фамилиям прочитать из массива mas
        begin
          s:=stringGrid1.Cells[0,i];
          ListBox1.Items.Add(s);
         end;
         StatusBar1.Panels.Items[1].Text:=OpenDialog1.FileName;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
  ListBox1.Sorted:=true;
end;

procedure TForm1.N4Click(Sender: TObject);
begin
  Close;
end;

end.
Admin: Пользуемся тегами!

Последний раз редактировалось Admin, 13.05.2009 в 16:31.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 23:13.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter