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/ |