|
|
|
| Помогите пожалуйста, возникла следующая проблема в паскале.
Есть типа Rec1:
Type Rec1=record
Nomer: word; {номер записи в файле}
A: array[1..2,1..2] of real; {коэффициенты системы}
C: array[1..2] of real; {свободные члены}
end;
|
Есть типизированный файл:
Можно ли каким то образом считать информацию из типизированного файла в соотвествующие переменнеые их типов. Подозреваю, что есть какая то функция, делающая это. Или придется делать стандартным образом - разделять на пробелы, записывать в переменные и т.д.? | |
|
|
|
|
|
|
|
для: Football
(24.02.2007 в 19:52)
| | var f : file of Rec1;
r : recl;
begin
Assign(f, ''C:\file.txt');
reset(f);
while not eof(f) do
read(f, r); {v peremennoj r s4itannij record}
end; | |
|
|
|
|
|
|
|
для: Temnovit
(25.02.2007 в 01:45)
| | А как записы должны быть расположены в файле? Пробовал в строку через пробелы - не считывает - пишет ошибка считывания. | |
|
|
|
|
|
|
|
для: Football
(25.02.2007 в 09:10)
| | Не надо никуда преобразовывать, просто так и пишите все подряд. | |
|
|
|
|
|
|
|
для: kasmanaft
(25.02.2007 в 11:27)
| | Если поставить тип byte, то во входном файле надо все писати бес пробелов, а в переменной,
скажем, r.nomer будет храниться ASCII код того символа. | |
|
|
|
|
|
|
|
для: AlMag
(25.02.2007 в 12:14)
| | Тогда, по идее, если Вы ставите тип integer, то во входжном файле надо записывать по два символа.
P. S. А зачем ват такой гемморой? Не проще просто считывать Readln(f,r.nomer, r.c[1]...), где f:text;? | |
|
|
|
|
|
|
|
для: AlMag
(25.02.2007 в 12:32)
| | Вот нужно именно таким гемороем ) Лаба такая. Я и сам хотел просто text'ом сделать, но препод сказал, чт онадо использовать типизированный файл. | |
|
|
|
|
|
|
|
для: Football
(25.02.2007 в 15:37)
| | Ну так используйте file of byte или file of char.
Или обязательно надо file of Rec1? | |
|
|
|
|
|
|
|
для: AlMag
(25.02.2007 в 15:46)
| | Именно обязательно File of Rec1. Там это прямо в условии задачи сказано. | |
|
|
|
|
|
|
|
для: Football
(25.02.2007 в 16:22)
| | Ваше счастье, что там так сказано ... Это гораздо проще будет сделать с типизированными файлами.
Temnovit показал примерно как нужно читать такой файл. | |
|
|
|
|
|
|
|
для: kasmanaft
(25.02.2007 в 16:45)
| | Да я это понял уже )
Мне надо знать, как должны располагаться в самом файле данные. Вот у меня по сути дела в переменная типа Ворд, затем четрые реала. У меня в айле написано пять чисел в строчку с разделением пробелмами. Считываю - пишут Disk Read Error | |
|
|
|
|
|
|
|
для: Football
(25.02.2007 в 18:02)
| | Файл типа recl, поэтому и данные в него нужно записывать такого типа, а не ворд, реал и т.д.
Вот примерный код:
type Recl=record
Nomer: word;
A: array[1..2] of real;
C: array[1..2] of real;
end;
var Fl: file of Recl;
r: Recl;
i: integer;
begin
randomize;
assign(Fl, 'file.dat');
rewrite(Fl);
for i := 1 to 5 do
begin
r.nomer := random(20);
r.a[1] := random(20);
r.a[2] := random(20);
r.c[1] := random(20);
r.c[2] := random(20);
write(Fl, r);
end;
close(Fl);
end.
|
| |
|
|
|
|
|
|
|
для: kasmanaft
(25.02.2007 в 18:30)
| | Спасибо, а я то думал, что они должны числами располагаться )
PS. В универе вообще гады. Мы ещё даже это не проходили - а там уже лабы делай по этим темам! | |
|
|
|