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

> Правила раздела!

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

> Текстовые файлы. Буфер текстового файла., Несколько вопросов...
сообщение
Сообщение #1


Ищущий истину
******

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

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


1. Зачем система при работе с текстовыми файлами, использует два одинаковых буфера?
(Я проверил, они всегда одинаковы.)
2. Зачем один буфер она размещает в стеке, а другой в куче?
3. На что указывают 4 адреса в записе файловой переменной?
вот такие:
OpenFunc: Pointer;
InOutFunc: Pointer;
FlushFunc: Pointer;
CloseFunc: Pointer;

На процедуры?
Что для каждого файла выходит есть в памяти своя процедура закрытия, и т.п. ?

ЗЫ: мне кажется что под текстовыми файлами скрываются обычые, но нас хорошо обманывают, а именно -
ИМХО:
при открытии файла как текстовго, система на самом деле его читает как обычный, испольуя процедуры
blockread, blockwrite (скоростные), и читает все эту гадость, а именно 127 байт в буфер.
А при чтении строки из файла, на самом деле читается она не из файла а из буфера (ну а буфер как только
мы к концу его подобрались обновляется).
..... хе-хе, ловко, ловко ... :yes:
Все было бы в моей теории хорошо, если бы не наличие второго буфера...

4. Что за буфер в памяти есть для файлов (всех) под именем UserData (всегда он почему-то заполне нулями)


ЗЫ:
Забыл сказать, я имею ввиду, что тип файловойпеременной file таков: (вернее text)
TextBuf = array[0..127] of Char;
TextRec = record
            Handle: Word;
            Mode: Word;
            BufSize: Word;
            Private: Word;
            BufPos: Word;
            BufEnd: Word;
            BufPtr: ^TextBuf;
            OpenFunc: Pointer;
            InOutFunc: Pointer;
            FlushFunc: Pointer;
            CloseFunc: Pointer;
            UserData: array[1..16] of Byte;
            Name: array[0..79] of Char;
            Buffer: TextBuf;
          end;


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 





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