Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Работа с типизованными файлами

Автор: kramolnic 21.12.2006 4:56

В FAQ не нашел, чем открывать файл для добавления записей в конец файла (если делать Rewrite, то файл, судя по описанию, уничтожается... Если Reset, то открывается только на чтение...)

Там же не нашел, как можно добавить запись не в конец файла, а на любое место внутри файла... На ум приходит только сохранить все записи после нужного места в другой файл (или массив), затем урезать исходный файл до этого места, добавить запись и дописать в конец все сохраненные записи... но это ж долго, если файл (очень) большой!

Кстати, было бы не плохо, если ответы на эти вопросы будут добавлены в FAQ...

Автор: мисс_граффити 21.12.2006 5:00

в типизированный можно писать, когда он открыт при помощи reset.(перемещаешь указатель с помощью seek на конец и спокойно дописываешь)
в текстовый - нельзя.

а вот со вставкой в середину действительно проблематично получается.

Автор: Bokul 21.12.2006 5:11

Цитата
в текстовый - нельзя.

blink.gif

var f:text;
s:string;
begin
assign(f,'tp.txt');
rewrite(f);
writeln(f,'1');
close(f);
append(f);
writeln(f,'2');
close(f);
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
close(f);
readln;
end.




Автор: kramolnic 21.12.2006 5:16

to Bokul:

Цитата(мисс_граффити @ 21.12.2006 1:00) *

в текстовый - нельзя.

полагаю, имелось в виду, что в текстовый нельзя дописывать при помощи Reset в отличие от типизованных файлов...

И спасибо за моментальный ответ! если честно, не мало удивлен give_rose.gif
мне прогу желательно к сегодняшнему утру сделать...

Автор: мисс_граффити 21.12.2006 5:25

Цитата
полагаю, имелось в виду, что в текстовый нельзя дописывать при помощи Reset в отличие от типизованных файлов...

да, разумеется.

перефразирую:
в типизированный файл можно писать, когда он открыт при помощи reset. в текстовый файл при таком способе открытия - нельзя.

что-то у меня последнее время с русским языком серьезные проблемы... сокращаю фразы, в итоге никто не понимает, что хотела сказать.

Автор: kramolnic 21.12.2006 6:43

И, надеюсь, последний вопрос..

Допустим, я связал файловую переменную f с каким-то файлом на диске, имя которого указал пользователь... можно ли из файловой переменной f получить путь к этому файлу и его имя и аттрибуты?

Автор: volvo 21.12.2006 15:50

Уточни, что ты имеешь в виду под "атрибутами"... Имя - легко получается...

Для НЕтекстовых файлов:

uses dos;
var f: file;

begin
assign(f, '01.txt'); reset(f, 1);

writeln('name = ', filerec(f).name); { <--- FileRec }

close(f);
end.


Для текстовых:
uses dos;
var f: text;

begin
assign(f, '01.txt'); reset(f);

writeln('name = ', textrec(f).name); { <--- TextRec }

close(f);
end.

Автор: kramolnic 22.12.2006 0:22

Цитата(volvo @ 21.12.2006 11:50) *

Уточни, что ты имеешь в виду под "атрибутами"...

Ну, вообще говоря, мне надо было только имя узнать, а про аттрибуты я просто попутно спросил. А так, архивный/только чтение/скрытый и дату создания/изменения. Можно еще полный путь к файлу. Короче, вообще все, что можно о нем узнать...

Автор: volvo 22.12.2006 0:52

Цитата
Короче, вообще все, что можно о нем узнать...
Нажми в IDE Паскаля Shift+F1, и найди в списке File-record, дабл-клик для просмотра топика, и ты получишь описание полей файлового типа... Это все, что можно узнать напрямую из файловой переменной...