А я и не прошу. Просто отметил, что жалко… Как бы нет единообразия. Вот тут .Print работает, а тут - нет. Кстати, для decimal не определена даже Sqr, не говоря о более серьезных функциях. Видимо, доллары в квадрат не возводят…
Да, это немного чужеродный тип
@admin, в #998 я использовал тайпклассы только потому что файл которым я тестировал уже был с ними, так меньше менять. С интерфейсами тоже не так:
type
I1 = interface end;
t1=class(I1) end;
procedure p1<T>(o:T);
where T: I1;
begin
writeln('I1');
end;
procedure p1<T>(o:T);
begin
writeln('not I1');
end;
begin end.
Тут пишет что p1
повторно объявлена. Это ошибка? Если нет, то как сделать чтоб на уровне компилятора решало какую подпрограмму вызвать?
Умножение процедуры на число
procedure p := Write(1); procedure q := Write(2); procedure ln := Writeln; procedure Run(p: procedure) := p; begin a1 := p*10 + ln; **//Пропущено var** a1; a1 := p*10 + q*10 + ln; a1; Run((p + q)*10 + ln); end.
Дальше:
Лямбда-выражения
Эквивалентный код без лямбд
function Cond(x: integer): boolean; begin Result := x mod 2 = 0; end; function Fun(x: integer): boolean; **//integer а не boolean** begin Result := x*x+1; **//а откуда +1?** end; begin var a := Arr(1,2,3,4,5,6,7,8,9); a.Where(Cond) .Select(Fun).Println; end.
Ещё
Типы процедурных переменных
real->real
– тип функции с параметром типаreal
, возвращающейreal
(real,real)->real
– тип функции с двумя параметрами типаreal
, возвращающейreal
()->integer
– тип функции без параметров, возвращающейreal
//А по моему integer
(real,real)->()
– тип процедуры с двумя параметрами типаreal
Это, скорее всего, не всё. Как насчёт просмотреть всё же презентации, перед тем как постить?)) (ну и теперь, те что запостили, это всё сразу в глаза бросается)
Ничего не понял. Слайд про умножение процедуры на число не про лямбды
Как это, вы дальше пролистайте. Сами же давали тут ссылку на неё, когда спросили про лямбды.
А пост мой, если что, про опечатки которые я там нашёл.
Я долго боялся, но вот очень понадобилось и всё же пришлось влезть во всю баганутость проектов WinForms (той самой функции IDE). Вам как, баги тамшние надо в issue? Там наверное штук 10-20 будет только для начала…
Это никто не будет переделывать я думаю. Мы тоже боялись туда влезать. При необходимости мы закроем эту часть. Раз уж мы стали очищать всё от багов
Фигасе! Т.е. по принципу гильотина – лучшее средство от головной боли?
Был вполне рабочий web-интерфейс – закрыли (ну, ладно, тому были объективные причины – закончилась целая эпоха проприетарных web-плагинов и там уже нечего было реанимировать без глобальной переделки на базе других технологий), теперь вот даже простой и удобный редактор формочек хотите пустить под нож лишь на основании того, что кто-то обратил внимание, что он несовершенен, а ремонтировать пока некому?!
Так скоро от “мощной среды разработки” вообще ничего не останется Могу добавить, что еще редактор весьма несовершенен, подсветка кода кривая, темы не поддерживаются, дебагер глюканутый, интеллисенс иногда фигню показывает, анализатор время от времени вообще падает, да еще и с потерей контекста, и сама среда, бывает, крашится ни с того ни с сего… Давайте уж сразу все это “закроем”, чтоб не мучаться, и оставим только голый компилятор! Хотя, нет, он тоже иногда крашится… Доктор сказал в морг – значит в морг!
Вы хотите сказать, что уже есть кому?
Ура, у нас скоро будет работающий редактор формочек, редактор кода с фановской подсветкой и поддержкой ништяков, дебагер для правильных пацанов (без глюков) и волшебный интеллисенс!
uses Graph3D;
var Pz:=Sphere(0, 0, 0, 0.2, colors.Blue);
begin
Window.Maximize;
Camera.UpDirection:=V3D(0,1,0);
Camera.Position:=P3D(0,0,30);
Camera.LookDirection:=V3D(0,0,-30);
for var i:=0 to 4 do
begin
Pz.MoveTo(1, 0, 0);
//Pz.MoveOn(1, 0, 0);
//Pz.AnimMoveOn(1, 0, 0, 5).Begin;
//Pz.AnimMoveTo(1, 0, 0, 5).Begin;
end;
end.
Объясните мне, пожалуйста, почему в этом коде операторы MoveTo и AnimMoveTo работают по-разному, это ошибка? Если нет, тогда в чем отличие между AnimMoveOn и AnimMoveTo?
Да ладно)). Мне вот оно понадобилось чтоб зрительно расставить элементы формы. А потом просто копирую координаты в нормальную программу. Как ни крути, даже с багами, это удобнее чем вслепую координаты вписывать, а потом смотреть не налезло ли 1 на другое. И так loop 100 do
.
Anim
это сокращение от “Анимация”. То есть просто Move
телепортирует объект, а AnimMove
плавно сдвигает его.
А MoveTo
и MoveOn
отличаются тем относительно чего они двигают. То есть MoveTo(1,0,0)
сдвигает в точку (1; 0; 0)
, а MoveOn(1,0,0)
сдвигает на 1 в сторону X+, относительно того где был объект когда началась анимация. Если он был в точке (5; 2; 3)
- MoveOn(1, 0, 0)
сдвинет его в точку (6; 2; 3)
, а MoveTo(1, 0, 0)
сдвинет его в точку (1; 0; 0)
.
По моему, хоть пишете Вы с @RAlex-ом много, но сути, кроме выяснения отношений, мало.
Никто не собирался полностью отказываться от редактора формочек, но вы вот попробуйте что то в нём сделать. Это не те баги компилятора, которые встречаются раз пару дней. Тут каждые 5 мин бьёшься бошкой о что то сырое и твёрдое. Как 1 из главных фич в таком состоянии это нельзя позиционировать, особенно считая что нет ни 1 разработчика, которому интересно было бы исправить всё это (хотя, кстати, им может стать каждый желающий. К примеру Вы).
Мне вот, когда я учился, 1 из учителей сказал что мне стоит научится в этом редакторе формочек работать, типо это очень важное умение. Ну и тогда я на долго вперёд ужасов насмотрелся. Так может любой новичок туда случайно залазить, а потом привыкает работать без анализатора кода и в условиях что лишнее лучше не трогать, а то ломается всё (был уже 1 такой, в помощь новичкам писал). А для карьеры программиста это как яд.
А, понял
В принципе, да. Он написан хорошим студентом 5 лет назад, идеи реализации мы уже забыли, он никем не поддерживается. Если хотим среду без багов, эту часть надо закрыть
Это ваша ошибка. Вы запускаете несколько анимаций одного и того же параллельно и сразу. Так нельзя. On относительно текущей точки, to — к абсолютной точке
Мы можем это поддерживать. Баги в интеллисенс потихоньку исправлять будем, но он у нас в силу общего алгоритма все равно останется нечувствительным к некоторым вещам. Баги в компиляторе это конечно наша основная ответственность. И пожалуйста имейте в виду, что всякие новые хотелки в языке будут потенциально множить баги. Так что предложения об улучшении должны быть самые необходимые, а не “давайте замутим это”
Хорошо, а можно тогда оформить эту удаляемую часть в виде плагина или опциональной dll-ки (с пустой заглушкой в базовом дистрибутиве), чтобы можно было как-то просто ручками добавлять её назад тем, кто находит её все-таки еще полезной, несмотря на все глюки? Она же будет пока неизменяемой, один раз адаптировал её таким образом и впоследствии никакой доп. работы по поддержке от вас не потребуется. В идеале – в инсталляторе отдельную галочку завести (по дефолту выключенную), с предупреждением для тех, кто её выбирает, о том, что компонент нестабильный и снят с поддержки, мол, ставьте только на свой страх и риск.
Вы запускаете несколько анимаций одного и того же параллельно и сразу.
Я специально заккоментировал остальные операторы в теле цикла, поэтому выполняется только один вид анимации. Просто логика ее выполнения мне была не ясна. Я думал, что анимация будет выполнятся последовательно по мере цикла, а она выполняется в конце цикла, например, если поставить такой оператор в цикле с i от 0 до 4:
Pz.AnimMoveon(1, 0.05*i*i*i, 0, 2).begin;
то анимация тела будет не по гиперболе, а по прямой из исходной точки в точку с координатами {1, 5}