Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Нужна помощь в Pascal'e
 
 автор: Football   (24.02.2007 в 19:52)   письмо автору
 
 

Помогите пожалуйста, возникла следующая проблема в паскале.
Есть типа Rec1:



Type Rec1=record
     Nomer: word;                     {номер записи в файле}
         A: array[1..2,1..2] of real; {коэффициенты системы}
         C: array[1..2] of real;           {свободные члены}
end;



Есть типизированный файл:


var Fl:file of Rec1;

Можно ли каким то образом считать информацию из типизированного файла в соотвествующие переменнеые их типов. Подозреваю, что есть какая то функция, делающая это. Или придется делать стандартным образом - разделять на пробелы, записывать в переменные и т.д.?

   
 
 автор: Temnovit   (25.02.2007 в 01:45)   письмо автору
 
   для: 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;

   
 
 автор: Football   (25.02.2007 в 09:10)   письмо автору
 
   для: Temnovit   (25.02.2007 в 01:45)
 

А как записы должны быть расположены в файле? Пробовал в строку через пробелы - не считывает - пишет ошибка считывания.

   
 
 автор: kasmanaft   (25.02.2007 в 11:27)   письмо автору
 
   для: Football   (25.02.2007 в 09:10)
 

Не надо никуда преобразовывать, просто так и пишите все подряд.

   
 
 автор: AlMag   (25.02.2007 в 12:14)   письмо автору
 
   для: kasmanaft   (25.02.2007 в 11:27)
 

Если поставить тип byte, то во входном файле надо все писати бес пробелов, а в переменной,
скажем, r.nomer будет храниться ASCII код того символа.

   
 
 автор: AlMag   (25.02.2007 в 12:32)   письмо автору
 
   для: AlMag   (25.02.2007 в 12:14)
 

Тогда, по идее, если Вы ставите тип integer, то во входжном файле надо записывать по два символа.

P. S. А зачем ват такой гемморой? Не проще просто считывать Readln(f,r.nomer, r.c[1]...), где f:text;?

   
 
 автор: Football   (25.02.2007 в 15:37)   письмо автору
 
   для: AlMag   (25.02.2007 в 12:32)
 

Вот нужно именно таким гемороем ) Лаба такая. Я и сам хотел просто text'ом сделать, но препод сказал, чт онадо использовать типизированный файл.

   
 
 автор: AlMag   (25.02.2007 в 15:46)   письмо автору
 
   для: Football   (25.02.2007 в 15:37)
 

Ну так используйте file of byte или file of char.
Или обязательно надо file of Rec1?

   
 
 автор: Football   (25.02.2007 в 16:22)   письмо автору
 
   для: AlMag   (25.02.2007 в 15:46)
 

Именно обязательно File of Rec1. Там это прямо в условии задачи сказано.

   
 
 автор: kasmanaft   (25.02.2007 в 16:45)   письмо автору
 
   для: Football   (25.02.2007 в 16:22)
 

Ваше счастье, что там так сказано ... Это гораздо проще будет сделать с типизированными файлами.
Temnovit показал примерно как нужно читать такой файл.

   
 
 автор: Football   (25.02.2007 в 18:02)   письмо автору
 
   для: kasmanaft   (25.02.2007 в 16:45)
 

Да я это понял уже )
Мне надо знать, как должны располагаться в самом файле данные. Вот у меня по сути дела в переменная типа Ворд, затем четрые реала. У меня в айле написано пять чисел в строчку с разделением пробелмами. Считываю - пишут Disk Read Error

   
 
 автор: kasmanaft   (25.02.2007 в 18:30)   письмо автору
 
   для: 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.

   
 
 автор: Football   (25.02.2007 в 19:00)   письмо автору
 
   для: kasmanaft   (25.02.2007 в 18:30)
 

Спасибо, а я то думал, что они должны числами располагаться )
PS. В универе вообще гады. Мы ещё даже это не проходили - а там уже лабы делай по этим темам!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования