OberonCore https://forum.oberoncore.ru/ |
|
Эмуляция Array Of Const (Delphi) https://forum.oberoncore.ru/viewtopic.php?f=30&t=2737 |
Страница 1 из 1 |
Автор: | Роман М. [ Четверг, 15 Июль, 2010 01:22 ] |
Заголовок сообщения: | Эмуляция Array Of Const (Delphi) |
Как можно сэмулировать Array Of Const на Обероне-2? Мне нужно имитировать делфийскую функцию Format. |
Автор: | Илья Ермаков [ Четверг, 15 Июль, 2010 11:55 ] |
Заголовок сообщения: | Re: Эмуляция Array Of Const (Delphi) |
Расскажите поподробнее про эту штуку в Дельфи, может, что и придумаем. |
Автор: | Роман М. [ Четверг, 15 Июль, 2010 12:04 ] |
Заголовок сообщения: | Re: Эмуляция Array Of Const (Delphi) |
Приведу частный пример: Код: WriteLn (Format('Compiled. pc=%d, dsize=%d', [compdata.pc, compdata.dsize])) Функция формат принимает первым параметром строку и вторым - массив переменных (разного типа), которые будут вставляться в первую строку, выполняя форматирование строки. Примером может быть сишная printf. |
Автор: | Илья Ермаков [ Четверг, 15 Июль, 2010 12:29 ] |
Заголовок сообщения: | Re: Эмуляция Array Of Const (Delphi) |
Во-первых, можно передавать VAR p: ANYREC и дальше через метапрограммирование вытаскивать поля. (Только как там в Обероне - не знаю). Либо, более тупо, прямо и быстро - передавать VAR data: ARRAY OF BYTE и иметь библиотечку с функциями считывания записей из двоичного потока. Как вот эти - viewtopic.php?f=2&t=2006 (Не забываем в них проверять, что записи без указателей - и имеем 100%-безопасность). Для элементарных типов в той же библиотечке имеем предобъявленные типы вида Int = RECORD val: INTEGER END. |
Автор: | Роман М. [ Пятница, 16 Июль, 2010 01:35 ] |
Заголовок сообщения: | Re: Эмуляция Array Of Const (Delphi) |
В компиляторе XDS появилось описывается понятие Sequence parameters: Цитата: Sequence parameters Sequence parameters for a Modula-2/Oberon-2 procedure are collected into a temporary variable, which is then passed as an ARRAY OF BYTE (i.e. its address and size are passed). For foreign procedures, a C-compatible approach is used --- parameters are pushed onto the stack. In either case, all ordinal type parameters are extended to 4 bytes, REALs to LONGREALs, non-scalar type parameters are passed by reference. Код: SEQ args: SYSTEM.BYTE Хм... ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |