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

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

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

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 - 2018, Delphi.int.ru
Версия форума: 1.10 (19.01.2010)
RSS Delphi.int.ru Expert Код
Выполнено за 0.04 сек.
Обратная связь  
Рейтинг@Mail.ru Majordomo.ru - надёжный хостинг