Проблема с записью/чтением файлов

Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain

Конструктор
Сообщения: 35
Зарегистрирован: 12 май 2004, 15:34
Откуда: Москва

nucer, не слышал про far указатели?
И что? Сегмент все равно 64 кб. Независимо от того какой указатель дос все равно может адресовать в пределах указанного сегмента. far указатель может просто разрешить использовать памяти более 64 кб, так как будет распихивать все по разным сегментам, а блоком >64кб прочитать все равно не получится.

Единственное средство которое я знаю это DPMI расширители доса, но это почти не дос уже.
Аватара пользователя
Romeo
Сообщения: 3126
Зарегистрирован: 02 мар 2004, 17:25
Откуда: Крым, Севастополь
Контактная информация:

Конструктор, человек читает посимвольно, а не блоком (см. код выше).
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Конструктор
Сообщения: 35
Зарегистрирован: 12 май 2004, 15:34
Откуда: Москва

Romeo, мне думается все равно не должно пахать.

Вот видим:


char *DATA = new char[L];


Разве он (dos) сможет выделить > 64 кб?
По идее он даст 64кб - 16 байт максимум.

Потом мы например читаем

DATA = fgetc( HNDL );

и если i у нас больше чем 64кб то тогда при вычислении адреса
будет переполнение, т.е. адрес вылезет за пределы сегмента.

Сомнительно, чтобы компиль разгадывал такое. Это же не бейсик.

Или far pointer'ы работают не как обычные поинтеры?

Жалко Borland 3.1 нет под рукой. :(
Zm
Сообщения: 2
Зарегистрирован: 28 апр 2004, 10:21
Контактная информация:

Короче, надо програмить под винду с использованием 64 разрядной адресации и переменных типа __int64, функций fgetpos и fsetpos, которые в 7-ой студии с 64 разр. переменными работают
wtom
Сообщения: 1
Зарегистрирован: 09 июн 2004, 18:33

fputc( fgetc( HNDL ) , NEW );
Ответить