Работа с файлом на Паскале
Смысл задачи прост имеется файл в котором в каждой строке находится фамилия имя отчество. Нужно из файла текстового перенести всех людей в массив записей.
Считать строку. Разбить на слова (раздел "Алгоритмы"). Запихать результат в запись. Запихать запись в массив.
Повторять до конца файла.
Что непонятно? подобные вещи описаны в любом учебнике.
Повторять до конца файла.
Что непонятно? подобные вещи описаны в любом учебнике.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
меня не получается сделать переборам по строкам файла. Что я делаю не так:
UPD:
это то что вверху у меня
UPD:
я не стал полностью приводить все описываемые переменные
UPD:
всё разобрался тему можно закрыть
Код: Выделить всё
write('vvedite ima faila*: ');
readln(ST);
assign(F1,ST);
{$I-}
reset(F1);
{$I+}
if ioresult<>0 then
begin
halt;
close(f1);
end
else
begin
k:=0;
while not eof(F1) do
begin
readln(F1,str);
while (k<=50) doa
begin
k:=k+1;
stu[k].FIO1.FAM:=copy(str,1,20);
stu[k].FIO1.IM:=copy(str,22,20);
stu[k].FIO1.OT:=copy(str,44,20);
stu[k].OC1:=(ord (str[66]) - ord('0'));
stu[k].OC2:=(ord (str[68]) - ord('0'));
stu[k].OC3:=(ord (str[70]) - ord('0'));
stu[k].POL:=copy(str,72,1);
end;
end;
end;
Код: Выделить всё
type
FIO=record
FAM:string[20];
IM: string[20];
OT: string[20];
end;
Stud=record
FIO1: FIO;
OC1, OC2, OC3: integer;
POL: string[5];
end;
var
stu:array[1..50] of stud;
UPD:
я не стал полностью приводить все описываемые переменные
UPD:
всё разобрался тему можно закрыть
Все-таки, условие цикла надо писать:
while (k<50) do
а не:
while (k<=50) do
Оператор close(f1);, стоящий после halt; бессмысленен, так как никогда не будет выполняться. Хотя вызов close(f1); для неоткрытого файла (а файл не был открыт, так как ioresult<>0) является ошибкой.
while (k<50) do
а не:
while (k<=50) do
Код: Выделить всё
if ioresult<>0 then
begin
halt;
close(f1);
end