Логин:     Забыли пароль?
 
Пароль:   Регистрация

Форум / Программирование - Помогите выявить ошибки в коде  

Помогите выявить ошибки в коде

akimov121
akimov121
Посетитель
Сообщения: 7
[Сообщение #1] 19 апреля 2012, 14:48
Помогите пожалуйста найти ошибки в коде.
При нажатии на кнопку Выполнить после прикрепления текстового файла вываливает ошибку.
Задание:Разработать программу, которая осуществляет поиск в массиве записей информации о студенте, фамилия которого вводится с клавиатуры. Исходные данные вводятся из текстового файла.
unit Unit1;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
 
type
  TForm1 = class(TForm)
    RichEdit1: TRichEdit;
    Run: TButton;
    Clear: TButton;
    Exit: TButton;
    Info: TButton;
    Open: TButton;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    Edit1: TEdit;
    procedure ClearClick(Sender: TObject);
    procedure ExitClick(Sender: TObject);
    procedure InfoClick(Sender: TObject);
    procedure RunClick(Sender: TObject);
    procedure OpenClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
Type
  Data=Record
    Year:1980.. 1995;
    Month:1..12;
    Day:1..31;
  End;
  Zap = Record
    Fam:string[20];
    Birthday : data;
  End;
 
var
  Form1: TForm1;
  r:array of Zap;
  Famyl,FName:string;
  i,j:byte;
  k:boolean;
  F:Textfile;
  l:array of AnsiString;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.ClearClick(Sender: TObject);
begin
  RichEdit1.Clear;
end;
 
procedure TForm1.ExitClick(Sender: TObject);
begin
  Form1.Close;
end;
 
procedure TForm1.InfoClick(Sender: TObject);
begin
  RichEdit1.Lines.LoadFromFile('info.txt');
end;
 
procedure TForm1.OpenClick(Sender: TObject);
begin
 if OpenDialog1.Execute then
    RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);
end;
procedure TForm1.RunClick(Sender: TObject);
begin
 if OpenDialog1.Execute then
 begin
   AssignFile(F, OpenDialog1.FileName);
   reset(F);
   i:=1;
   repeat
    with r[i] do begin
      readln(F,fam);
      with birthday do begin
        readln(F,year);
        readln(F,month);
        readln(F,day);
      end;
    end;
    i:=i+1;
   until eof(F);
   CloseFile(F);
   j:=i-1;
   for i:=1 to j do
   with r[i] do
   RichEdit1.Text:=RichEdit1.Text+#13#10+Fam+' '+inttostr(birthday.day)+' '+inttostr(birthday.month)+'
'+inttostr(birthday.year);
   Famyl:=Edit1.Text;
   i:=0;
   k:=false;
   repeat
        i:=i+1;
        if r[i].fam=Famyl then k:=true
   until (k=true) or (i=j) ;
    if k then begin
    with r[i] do
    RichEdit1.Text:=RichEdit1.Text+#13#10+Fam+' '+inttostr(birthday.day)+' '+inttostr(birthday.month)+'
'+inttostr(birthday.year);
   end
    else RichEdit1.Text:=RichEdit1.Text+#13#10+'Студент не найден';
  end;
 
end;
 
end.

Вадим К
Вадим К
Академик
Сообщения: 85
[Сообщение #2] 19 апреля 2012, 15:07
Программа будет точно глючить, если файле нет ни одной записи.

Галочка "подтверждения прочтения" - вселенское зло.
akimov121
akimov121
Посетитель
Сообщения: 7
[Сообщение #3] 19 апреля 2012, 15:24
Записи там есть, это точно.

min@y™
min@y™
Доктор наук
Сообщения: 400
[Сообщение #4] 19 апреля 2012, 19:37
Просмотрел код.
ИМХО, я бы переписал его с нуля, по-нормальному.
Изложи задание полностью, может быть что-нибудь посоветую.

Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Всего сообщений: 4 (сейчас показаны: с 1 по 4)

Перейти в раздел:


 © 2004 - 2024, Delphi.int.ru
Версия форума: 1.10 (19.01.2010)
RSS Delphi.int.ru Expert Код
Выполнено за 0.02 сек.
Обратная связь