Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2016, 01:28   #1
charlie_
Новичок
Джуниор
 
Регистрация: 08.12.2016
Сообщений: 1
По умолчанию Delphi. Работа с файлами и записями

(я вообще только что зарегалась, поэтому немного не в курсе, как тут все работает. извиняюсь, если что-то не так)

На междугородной АТС информация о разговорах содержит дату разговора, код и название города, время разговора, тариф, номер телефона в этом городе и номер телефона абонента. Вывести по каждому городу общее время разговоров с ним и сумму.

У меня проблема в логике. Она вроде считает, но что-то не то (Button5)

Код:
unit Unit6;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Buttons, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label7: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    BitBtn1: TBitBtn;
    Button5: TButton;
    Label6: TLabel;
    Edit7: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);



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

Type
  TATC=record
    data: string[40];			// дата
    numbers: array[1..2] of int64;		//массив номеров
    tariff : extended; 			// тариф
    time:integer;               //время разговора
    cityname:string[40];    //название города
    citycode:word;
  end;
Var
  Fz  : file of  TATC;		// Файл типа запись
  Ft  : TextFile;			// Текстовой файл
  ATC : array[1..100] of TATC;	// Массив записей
  nzap : integer;			// Номер записи
  FileNameZ, FileNameT : string; 	// Имя файла


var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
var
  I: integer;
begin
  nzap:=nzap+1;
  with ATC[nzap] do begin
           data:=Edit1.Text;
           numbers[1]:=StrToInt(Edit6.Text);
           numbers[2]:=StrToInt(Edit7.Text);
           citycode:=StrToInt(Edit2.Text);
           cityname:=Edit3.Text;
           time:=StrToInt(Edit4.Text);
           tariff:=StrToFloat(Edit5.Text);
  Memo1.Lines.Add(data+'  '+IntToStr(numbers[1])+'  '+ IntToStr(numbers[2])+'   '+IntToStr(citycode)+'   '+cityname+'     '+IntToStr(time)+'    '+FloatToStr(tariff));

  end;
  Write(fz,ATC[nzap]);					// Запись в файл
   Edit1.Text:='';
   Edit2.Text:='';
   Edit3.Text:='';
   Edit4.Text:='';
   Edit5.Text:='';
   Edit6.Text:='';
   Edit7.Text:='';
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
   OpenDialog1.Title :='Создать новый файл'; 	// Изменение заголовка окна диалога
 if OpenDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
   begin
    FileNameZ:= OpenDialog1.FileName; // Возвращение имени дискового файла
    AssignFile(Fz, FileNameZ);  // Связывание файловой переменной Fz c именем файла
     Rewrite(Fz);                         // Создание нового файла
   end;
    Button1.Show;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if OpenDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
   begin
    FileNameZ:= OpenDialog1.FileName; // Возвращение имени дискового файла
    AssignFile(Fz, FileNameZ);    // Связывание файловой переменной Fz c именем файла
     Reset(Fz);                                // Открытие существующего файла
   end;
  while not eof(fz) do begin
   nzap:=nzap+1;
      Read(fz,ATC[nzap]);                // Чтение записи из файла
         with ATC[nzap] do
     Memo1.Lines.Add(data+'  '+IntToStr(numbers[1])+'  '+ IntToStr(numbers[2])+'   '+IntToStr(citycode)+'   '+cityname+'     '+IntToStr(time)+'    '+FloatToStr(tariff));
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
var i:word;
begin
if SaveDialog1.Execute then  // Выполнение стандартного диалога выбора имени файла
  begin
    FileNameT:= SaveDialog1.FileName; // Возвращение имени дискового файла
    AssignFile(Ft, FileNameT);     // Связывание файловой переменной Ft c именем файла
    Rewrite(Ft);                           // Открытие нового текстового файла
    end;
  for i:=1 to nzap do
  with ATC[i] do  Writeln(Ft,i:4,'. ',data,numbers[1],numbers[2],citycode,cityname,time,tariff);
                     // Запись в текстовой файл
  CloseFile(Ft);     // Закрытие текстового файла
end;

procedure TForm1.Button5Click(Sender: TObject);
var
  i,j,k:integer;
  temp,temp2,temp3:extended;
begin
  temp:=0;
 temp2:=0;
 temp3:=0;
 for i:=1 to nzap do
   for j := 2 to nzap do
begin
  with ATC[i] do begin
        if (cityname[i]=cityname[j]) then begin
         temp:=tariff*time;
  with ATC[j] do
        temp2:=tariff*time;
        temp3:=temp+temp2;
       end;
  end;
     Memo1.Lines.Add('temp '+FloatToStr(temp)+'  '+'temp2 '+FloatToStr(temp2));
end;
Memo1.Lines.Add('стоимость равна '+FloatToStr(temp3));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Memo1.Clear;
  Button1.Hide; //Сделать невидимой кнопку "Ввести запись"
  nzap := 0;
end;

end.
Моя форма, если нужно.
charlie_ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Pascal ABC Работа с записями и файлами lyyb Помощь студентам 0 10.11.2016 22:25
Работа с типизированными файлами и записями Reiderian Помощь студентам 1 01.03.2014 23:15
Работа с файлами и записями Евгений000 Паскаль, Turbo Pascal, PascalABC.NET 5 04.12.2012 09:10
Работа с записями и файлами(Pascal) Manular Помощь студентам 5 28.04.2012 08:25
Работа с файлами и записями. Помощь с итоговой Refenement Помощь студентам 13 19.03.2009 08:42