OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Воскресенье, 28 Апрель, 2024 11:27

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
 Заголовок сообщения: SYSTEM.PTR
СообщениеДобавлено: Четверг, 27 Апрель, 2006 16:00 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Коллеги, что за штука такая SYSTEM.PTR? Вроде как это тип для адресов памяти. В настоящей версии совместим с INTEGER. Но!
Делаю следующее объявление:
Код:
IMPORT Files;

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 28 Апрель, 2006 09:21 

Зарегистрирован: Суббота, 22 Апрель, 2006 21:30
Сообщения: 35
Хочешь обмануть BB и в buf пихать указатели на разные типы данных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 28 Апрель, 2006 11:51 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Нет, делаю "файл", который работает с данными в памяти. Память выделяется через VirtualAlloc, либо связывается с файлом на диске через File-Mapping.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 28 Апрель, 2006 14:37 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1429
SYSTEM.PTR остался от Оберона. Это "просто указатель". Он совместим с POINTER TO Something, но не с INTEGER.

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

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 28 Апрель, 2006 14:44 

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


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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пятница, 28 Апрель, 2006 14:52 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Да, я так и поступил. Просто раньше в ядре встречал этот самый PTR и подумал: а почему бы не использовать? "Если ружье висит на стенке, должно же оно выстрелить" :-) Это правда, что программисты волей-не волей стремятся использовать все предоставленные им возможности, чтоб не простаивало... :-)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 6


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB