A2 & Oberon GOOGLE trans to English      Помощь      Поиск      Пользователи  Файловый архив


 Страниц (1): [1]   

> Описание: Недокументированные возможности, малоизвестные возможности и всякие полезности
BohdanT Администратор
Отправлено: 24 Сентября, 2008 - 17:14:26
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Наверное все обращают внимание, что кнопочки в А2 уж сильно "плоские".
Оказывается, что можно делать интерфейс более "объемным".
Свойство Effect3D у Button может иметь значения отличные от 0 и 1 ХорошоХорошо
на скриншоте у кнопочки слева стоит значение Effect3D:=8;
у кнопочки спправа стоит значение Effect3D:=1;
 
 Top
oberon Администратор
Отправлено: 24 Сентября, 2008 - 23:11:50
Post Id


Администратор


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2008  
Репутация: 0




Ну вот,решил модифицировать виртуальную клавиатуру и фиг тебеОднако
Оказывается в "быту" Effect3D называется glassEffect Не понял
Ну что, опять будем ругаться с ETZH, вроде такие правильные, а такие нехорошие вещи делают Ниндзя

PS: Уже исправили! Радость теперь свойство назівается Effect3D
 
 Top
oberon Администратор
Отправлено: 27 Сентября, 2008 - 17:41:41
Post Id


Администратор


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2008  
Репутация: 0




Многим в языке Oberon не нравится то, что все ключивые слова нужно писать в верхнем регистре (БОЛЬШИМИ буквами).
Если мы загляним в исходник сканера PCS.MOD то обнаружим занимательную строку
			lcase-,ucase-: BOOLEAN;  (* lcase=true: recognize lowercase keywords , ucase=true: recognize uppercase keywords*)

когда же lcase=true? Смотрим дальше по коду:
								ELSIF str = "MODULE" THEN s := module;  lcase := FALSE; (* fof *)

если мы попробуем написать кл. слово "module " в нижнем регистре, то далее воспринимаются ключевые слова исключительно в нижнем регистре.
 
 Top
oberon Администратор
Отправлено: 01 Октября, 2008 - 13:51:31
Post Id


Администратор


Покинул форум
Сообщений всего: 13
Дата рег-ции: Апр. 2008  
Репутация: 0




Хотел привести небольшой пример перегрузки операторов в ActiveOberon.
Обычно все приводят операции с комплексными числами, но я решил взять нечто более практичное - строки.
Наверное код гораздо больше расскажет, чем описывать словами. Вот примеры использования прикрепленного модуля (для работы, просто подключите модуль в секции импорт):


s:="Test"; (идентично s:=Utilities.NewString("Test"))
cod:="Просто строка"+MyFunc(param)+","+IntToStr(test.bounds.GetHeight())+");"; (*no coment*)


Отредактировано администратором: BohdanT, 14 Октября, 2008 - 03:14:27
 
 Top
sage Администратор
Отправлено: 01 Октября, 2008 - 15:33:40
Post Id


Full Member


Покинул форум
Сообщений всего: 218
Дата рег-ции: Июнь 2008  
Откуда: Киев, Украина
Репутация: 0




Неоффициально в A2 на уровне компилятора присутствует набор операторов для работы с векторами и матрицами.
Достигается краткость и ясность записи операций с матрицами и присутствует оптимизация с использованием SIMD инструкций.
На практике, при использовании маленьких векторов и матриц (операторы прежде всего нацеливались на работу с огромными Умник векторами и матрицами), оптимизация ощутимого прироста производительности не даёт, но в ETHZ надеются устранить проблемы производительности с грядущим выходом нового компилятора Хорошо
И самое приятное, что новые операторы тоже доступны для перегрузки, чем и можно пользоваться до выхода нового компилятора Закатив глазки
Список операторов:
Цитата:
(* s: scalar ; A,B,C: arrays ; b: boolean ; v: integer vector *)
s := min | max | sum (A); (* array -> scalar *)
A := -B; A := ~ B; A := abs (B); (* array -> array *)
A := short (B); A := long (B); A := entier (B); (* conversion *)
b := B =| <| <=| >| >=|# C; (* array x array -> boolean *)
A := B +| -|*|/|div|mod s; (* array x scalar -> array *)
A := B div|mod|+| -|.*|./ C; (* array x array -> array *)
A := B or|&|.=|. <|. <=|. >|. >=|.# C; (* array x array -> boolean *)
s := B +* C; (* scalar product *) A := B ‘; (* transposition *)
A := B * C; (* matrix / vector product *)
A := B ** C; (* tensor product *) A := reshape (B,v); (* reshape operation *)

http://nativesystems.inf.ethz.ch...inearAlgebra.pdf
 
 Top
BohdanT Администратор
Отправлено: 13 Октября, 2008 - 12:16:06
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Я вот подумал, а документированные возможности есть? РадостьРадостьРадость

Вот хотел рассказать, что можно монтировать папки.
Пример это папка Work. Но можно "примонтровать" любую папку. Например Source.
Для этого в aos.ini добавляем:


Paths.Sources = Sources
Boot9 = FSTools.Mount Sources WinRelFS ./../../Source

Кстати там же можно прописать пути поиска в переменной Paths.Search
Советую добавить C:/WINDOWS/Fonts, что бы можно было пользоваться любимыми шрифтами
 
 Top
neuf
Отправлено: 13 Октября, 2008 - 14:20:05
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




Цитата:

Пример это папка Work.

Да, я этим пользуюсь. Удобно, когда надо переключаться с пректа на проект. Кстати,
в каждом проекте можно сохранять свой рабочий стол, он хранится в Auto.dsk
Цитата:

Но можно "примонтровать" любую папку. Например Source.
Для этого в aos.ini добавляем:

Paths.Sources = Sources
Boot9 = FSTools.Mount Sources WinRelFS ./../../Source


А вот за этот совет спасибоЗакатив глазки . Здесь, насколько я понял, путь надо вводить относительно WORK.
 
 Top
BohdanT Администратор
Отправлено: 13 Октября, 2008 - 14:50:25
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




Да путь вводится относительно Work. Но можно и так
Boot6 = FSTools.Mount Tester WinRelFS F:/fleshka

Цитата:
в каждом проекте можно сохранять свой рабочий стол, он хранится в Auto.dsk

А как их переключать?
Конечно можно сделать батничек, но может есть другой способ?
 
 Top
neuf
Отправлено: 13 Октября, 2008 - 15:13:42
Post Id


Junior Member


Покинул форум
Сообщений всего: 63
Дата рег-ции: Авг. 2008  
Откуда: Калуш, Ивано-Франковская обл., Украина
Репутация: 0




[quote:]
А как их переключать?
Конечно можно сделать батничек, но может есть другой способ?
[/quote]
Ну, я пока ничего лучшего не придумал, чем каждый раз при переключении с проекта
на проект прописывать в aos.ini нужный путь в Paths.Work.
Auto.dsk хранится в каталоге соответствующего проекта. Его, кстати, при необходимости можно и руками подправить, это обычный XML-файл.
 
 Top
BohdanT Администратор
Отправлено: 13 Октября, 2008 - 16:29:54
Post Id



Super Member


Покинул форум
Сообщений всего: 606
Дата рег-ции: Июль 2008  
Откуда: Киев, Украина
Репутация: 2




neuf пишет:
[quote:]
А как их переключать?
Конечно можно сделать батничек, но может есть другой способ?

Ну, я пока ничего лучшего не придумал, чем каждый раз при переключении с проекта
на проект прописывать в aos.ini нужный путь в Paths.Work.
Auto.dsk хранится в каталоге соответствующего проекта. Его, кстати, при необходимости можно и руками подправить, это обычный XML-файл.[/quote]
У меня тогда другое решение напрашивается, пример:
w1.Bat:

copy w1.ini aos.ini
aos.exe
copy aos.ini w1.ini

только добавить ключик, что бі вопрос о перезаписи не задавало
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« Общеe »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Locations of visitors to this page
[Valid RSS]

RSS

Valid CSS!


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.0276]     [ Gzipped ]