A2 & Oberon » Программирование » Общеe » Недокументированные возможности A2

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

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

PS: Уже исправили! Радость теперь свойство назівается Effect3D
3. oberon - 27 Сентября, 2008 - 17:41:41 - перейти к сообщению
Многим в языке 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 " в нижнем регистре, то далее воспринимаются ключевые слова исключительно в нижнем регистре.
4. oberon - 01 Октября, 2008 - 13:51:31 - перейти к сообщению
Хотел привести небольшой пример перегрузки операторов в ActiveOberon.
Обычно все приводят операции с комплексными числами, но я решил взять нечто более практичное - строки.
Наверное код гораздо больше расскажет, чем описывать словами. Вот примеры использования прикрепленного модуля (для работы, просто подключите модуль в секции импорт):


s:="Test"; (идентично s:=Utilities.NewString("Test"))
cod:="Просто строка"+MyFunc(param)+","+IntToStr(test.bounds.GetHeight())+");"; (*no coment*)
5. sage - 01 Октября, 2008 - 15:33:40 - перейти к сообщению
Неоффициально в 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
6. BohdanT - 13 Октября, 2008 - 12:16:06 - перейти к сообщению
Я вот подумал, а документированные возможности есть? РадостьРадостьРадость

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


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

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

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

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

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

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


А вот за этот совет спасибоЗакатив глазки . Здесь, насколько я понял, путь надо вводить относительно WORK.
8. BohdanT - 13 Октября, 2008 - 14:50:25 - перейти к сообщению
Да путь вводится относительно Work. Но можно и так
Boot6 = FSTools.Mount Tester WinRelFS F:/fleshka

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

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

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

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

только добавить ключик, что бі вопрос о перезаписи не задавало

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

[Script Execution time: 0.0162]     [ Gzipped ]