Forth и другие саморасширяющиеся системы программирования Locations of visitors to this page
Текущее время: Пт мар 29, 2024 01:49

...
Google Search
Forth-FAQ Spy Grafic

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: По поводу локальных переменных...
СообщениеДобавлено: Сб июн 21, 2008 10:22 
Я могу написать так:
Код:
: ->ConsoleScreenBufferSize ( length height -- )
      { Length Height \ ScreenBufferSize -- }
      Length AT ScreenBufferSize COORD::X W!
      Height AT ScreenBufferSize COORD::Y W!
      ScreenBufferSize StdOutHandle SetConsoleScreenBufferSize DROP
;
А вот так я написать не могу:
Код:
: ->ConsoleWindowSize ( length height -- )
      { Length Height \ ConsoleWindowInfo [ SMALL_RECT::/SIZE ]  -- }
      0 AT ConsoleWindowInfo SMALL_RECT::Left W!
      0 AT ConsoleWindowInfo SMALL_RECT::Top W!
      Length 1- AT ConsoleWindowInfo SMALL_RECT::Right W!
      Height 1- AT ConsoleWindowInfo SMALL_RECT::Bottom W!
      AT ConsoleWindowInfo TRUE StdOutHandle SetConsoleWindowInfo DROP
;
Ибо вылезают какие-то странные глюки. Приходится создавать ConsoleWindowInfo с помощью CREATE. Почему?


Вернуться к началу
  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 21, 2008 13:19 
Не в сети

Зарегистрирован: Чт май 04, 2006 18:18
Сообщения: 456
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Потому что надо внимательно читать документацию.
Код:
: ->ConsoleWindowSize ( length height -- )
      { Length Height \ [ SMALL_RECT::/SIZE ] ConsoleWindowInfo -- }

И использовать AT не надо, т.к. переменная ConsoleWindowInfo будет оставлять адрес зарезервированной области.
lib/ext/locals.f писал(а):
Или { a b c d \ e f[ EVALUATE_выражение ] -- i j }
Это значит что для переменной f[ будет выделен на стеке возвратов участок
памяти длиной n байт. Использование переменной f[ даст адрес начала этого
участка. \В стиле MPE\

Или { a b c d \ e [ 12 ] f -- i j }
Это значит что для переменной f будет выделен на стеке возвратов участок
памяти длиной 12 байт. Использование переменной f даст адрес начала этого
участка.

_________________
http://forth.org.ru/~ygrek


Вернуться к началу
 Профиль Отправить личное сообщение  
Ответить с цитатой  
 Заголовок сообщения:
СообщениеДобавлено: Сб июн 21, 2008 23:16 
ygrek
Спасибо!


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

Часовой пояс: UTC + 3 часа [ Летнее время ]


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

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


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

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
phpBB сборка от FladeX // Русская поддержка phpBB