IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Как создать типизированный файл, file of
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 16
Пол: Мужской

Репутация: -  0  +


Всем привет! Почитал про типизированные файлы на форуме но так и не наашёл решение своей проблемы.
Хочу создать типизированный файл в который будут писать числа типа real.


const n = 8;
{type numbers = record
num : real;
end;}
type numbers = file of real;
var fname : string;
i : integer;
sum, k : real;
ans : char;
f1 : numbers;

function fi(p: integer): real;
var i : integer;
sum : real;
begin

sum := sqrt(3 * p);
for i := p downto 1 do
if (i = 1) then
fi := sum
else
sum := sqrt(sum + 3 * (i - 1));
end;

procedure newfile(var f1 : numbers);
var s : string;
num : real;
{with num_ref do}
begin
rewrite(f1);
{write(f1, num_ref);}
for i := n downto 1 do
begin
if (i = 1) then
begin
num := sqrt(3);
writeln(f1, num);
break;
end
else
begin
writeln(f1, fi(i));
end;
end;
close(f1);
end;

procedure outputfile(var f1 : numbers; p : integer);
var s : string;

begin
reset(f1);
repeat
readln(f1, s);
write('f', p, '=');
writeln(s);
dec(p);
until eof(f1);
end;

begin
clrscr;
writeln('Create a new file?');
readln(ans);
ans := upcase(ans);
if (ans = 'Y') or (ans = 'YES') then
begin
writeln('Enter name a file');
readln(fname);
assign(f1, fname);
newfile(f1);
outputfile(f1, n);
end
else
begin
writeln('What file you want open?');
readln(fname);
assign(f1, fname);
outputfile(f1, n);
end;
readln;
end.



Пишет инвалидный тип файла. Помогите разобраться...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гуру
*****

Группа: Пользователи
Сообщений: 1 168
Пол: Мужской
Реальное имя: Сергей Андрианов

Репутация: -  28  +


Длина файла возвращается в количестве тех переменных указанного типа, что ты описал. Т.е. если в файле присутствует 100 14-байтных записей (точек), то FileSize(F) возвратит число 100. Длина же файла при этом составит 1400 байт.
Функция же sizeof возвращает не длину файла, а размер объекта в байтах. т.е. для одной точки это будет 14.

Цитата
А если так type f1 = file of t3Dpoint, то sizeof(f1), то будут 128 что? Байт?И как это соотнесется с точками?
Это будет длина перемнной типа f1 в байтах. К длине файла она никакого отношения не имеет. Ведь, обрати внимание, ее тип не "3DPoint", а "File of 3DPiont", а это далеко не одно и то же.
Просто тип file - это тоже сложный тип, состоящий из нескольких полей, в которых хранится набор переменных, необходимых для доступа к файлу. С содержимым файла содержимое этих переменных никак не связано.
Если проводить аналогию, то файл и файловая переменная связаны примерно так же, как ячейка памяти и указательна ячейку памяти.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме
kosya4ok   Как создать типизированный файл   14.12.2007 15:32
volvo   Данные в типизированный файл не пишутся через Writ…   14.12.2007 15:44
kosya4ok   Ага. volvo заменил writeln на write, но только теп…   14.12.2007 16:43
volvo   А вот смотреть блокнотом не надо типизированные фа…   14.12.2007 16:53
kosya4ok   Так я так и не понял что надо сделать то? :unsure…   14.12.2007 16:59
volvo   Значит, надо создавать НЕ типизированный, а тексто…   14.12.2007 18:03
kosya4ok   Окей. А чем посмотреть тогда типизированный файл и…   14.12.2007 18:33
andriano   Типизированный файл при желании можно посмотреть h…   15.12.2007 0:29
kosya4ok   Ясно. Спасибо за понятный ответ. А то народ никак …   15.12.2007 0:33
volvo   :dry: Сколько же можно тебе объяснять? Тебе поста …   15.12.2007 0:37
kosya4ok   Так а сколько ты нормально раз объснял?Покажи. Заш…   15.12.2007 0:49
andriano   Вдогонку: чем смотреть типизированный файл? Специа…   15.12.2007 0:57
kosya4ok   Я не понимаю как мона сгруппировать и извлечь инфо…   15.12.2007 1:04
andriano   Я не понимаю как мона сгруппировать и извлечь инф…   15.12.2007 1:27
volvo   :mega_chok: 32-битные компиляторы не доведут до…   15.12.2007 1:16
kosya4ok   Цитата(kosya4ok @ 14.12.2007 21:04) Я не понимаю…   15.12.2007 1:43
andriano   Группировать по 6 байтов (48 битов). А что конкрет…   15.12.2007 1:56
Гость   СПС всем !!ТЕМА закрыта!   15.12.2007 3:30
kosya4ok   А вы не объясните почему вот так вот можно писать …   15.12.2007 3:43
Lapp   А вы не объясните почему ... вот так вот нельзя. …   15.12.2007 5:09
andriano   kosya4ok, просмотрел тему и у меня сложилось впеча…   15.12.2007 15:31
kosya4ok   Опочки прикольно! То есть вы хотите сказать чт…   15.12.2007 16:49
andriano   Минуточку. Та ЗНАЧЕНИЕ или ОБЛАСТЬ ПАМЯТИ? write р…   15.12.2007 17:02
kosya4ok   Привет! Вот же ж люди какие бывают какие прони…   15.12.2007 17:18
andriano   Длина файла возвращается в количестве тех переменн…   15.12.2007 17:33
kosya4ok   За По поводу пергрузки: во-первых, write - не фу…   15.12.2007 17:37
andriano   Нет, в том то и дело, что в proc1 произошла переда…   15.12.2007 17:50
kosya4ok   Ну и ну. Вообщем пошёл учить Паскаль.   15.12.2007 18:00


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 17.04.2024 5:47
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name