OberonCore
https://forum.oberoncore.ru/

SYSTEM.PTR
https://forum.oberoncore.ru/viewtopic.php?f=2&t=183
Страница 1 из 1

Автор:  Илья Ермаков [ Четверг, 27 Апрель, 2006 16:00 ]
Заголовок сообщения:  SYSTEM.PTR

Коллеги, что за штука такая SYSTEM.PTR? Вроде как это тип для адресов памяти. В настоящей версии совместим с INTEGER. Но!
Делаю следующее объявление:
Код:
IMPORT Files;

TYPE
  Ptr = SYSTEM.PTR;
  File = POINTER TO RECORD (Files.File)
    buf: Ptr
  END;

При попытке компилировать выдается ошибка: Recursive Type Definition.
При этом если убрать наследование от Files.File, то все нормально.

Автор:  Grabli [ Пятница, 28 Апрель, 2006 09:21 ]
Заголовок сообщения: 

Хочешь обмануть BB и в buf пихать указатели на разные типы данных?

Автор:  Илья Ермаков [ Пятница, 28 Апрель, 2006 11:51 ]
Заголовок сообщения: 

Нет, делаю "файл", который работает с данными в памяти. Память выделяется через VirtualAlloc, либо связывается с файлом на диске через File-Mapping.

Автор:  Trurl [ Пятница, 28 Апрель, 2006 14:37 ]
Заголовок сообщения: 

SYSTEM.PTR остался от Оберона. Это "просто указатель". Он совместим с POINTER TO Something, но не с INTEGER.

Цитата:
При попытке компилировать выдается ошибка: Recursive Type Definition.

Скорее всего, ошибка в компиляторе. Вот так
Код:
  File = POINTER TO RECORD (Files.File)
    buf: SYSTEM.PTR;
  END;

компилируется нормально.

Автор:  Trurl [ Пятница, 28 Апрель, 2006 14:44 ]
Заголовок сообщения: 

Илья Ермаков писал(а):
Нет, делаю "файл", который работает с данными в памяти. Память выделяется через VirtualAlloc, либо связывается с файлом на диске через File-Mapping.


Здесь SYSTEM.PTR совсем ни к чему. Лучше просто INTEGER или POINTER TO ARRAY [untagged] OF BYTE.

Кстати, в OleData есть простенький MemFile.

Автор:  Илья Ермаков [ Пятница, 28 Апрель, 2006 14:52 ]
Заголовок сообщения: 

Да, я так и поступил. Просто раньше в ядре встречал этот самый PTR и подумал: а почему бы не использовать? "Если ружье висит на стенке, должно же оно выстрелить" :-) Это правда, что программисты волей-не волей стремятся использовать все предоставленные им возможности, чтоб не простаивало... :-)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/