|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Программирование с использованием файлов.
Заданице: В справочной автовокзала хранится расписание движения автобусов. Для каждого рейса указаны его номер, тип автобуса, пункт назначения, время отправления и прибытия. Вывести информацию о рейсах, которыми можно воспользоваться для прибытия в пункт назначения раньше заданного времени.
Код:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; Button5: TButton; Button6: TButton; Memo1: TMemo; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button6Click(Sender: TObject); procedure Button5Click(Sender: TObject); private { Private declarations } public { Public declarations } end; Type Tavt=record Nmar: integer; Tipavt: string[20]; Punkt: string[20]; VrOtpr: TDateTime; VrPr: TDateTime; end; Var Fz:File of Tavt; Ft:TextFile; Avto:array[1..100] of Tavt; nzap:integer; FileNameZ, FileNameT : string; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin nzap:=nzap+1; with Avto[nzap] do begin Nmar:=StrToInt(Edit1.Text); Tipavt:=Edit2.Text; Punkt:=Edit3.Text; VrOtpr:=StrToTime(Edit4.Text); VrPr:=StrToTime(Edit5.Text); Memo1.Lines.Add(IntToStr(Nmar)+' ' +Tipavt+' ' +Punkt+' ' +timeToStr(VrOtpr)+' ' +timeToStr(VrPr)); end; Write(fz,Avto[nzap]); // Запись в файл Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; end; procedure TForm1.FormCreate(Sender: TObject); begin Edit1.Text:=''; Edit2.Text:=''; Edit3.Text:=''; Edit4.Text:=''; Edit5.Text:=''; Memo1.Clear; // Сделать невидимой кнопку "Ввести запись" nzap:=0; Button1.Hide; end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.clear; 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 memo1.Clear; 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,Avto[nzap]); // Чтение записи из файла with Avto[nzap] do Memo1.Lines.Add(IntToStr(Nmar)+' ' +Tipavt+' ' +Punkt+' ' +TimeToStr(VrOtpr)+' ' +TimeToStr(VrPr)); end; Button1.Show; // Сделать видимой кнопку "Ввести запись" end; procedure TForm1.Button6Click(Sender: TObject); begin form1.Close; end; procedure TForm1.Button5Click(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 Avto[i] do Writeln(ft, IntToStr(Nmar)+' ' +Tipavt+' ' +Punkt+' ' +TimeToStr(VrOtpr)+' ' +TimeToStr(VrPr)); CloseFile(Ft); // Закрытие текстового файла end; end. У меня вопрос по баттону5. Где-то ошибка. Кнопка то сохраняет какую-то каляку-маляку, то вообще ничего не сохраняет. Буду рад любой помощи. Последний раз редактировалось Admin, 05.04.2010 в 15:06. |