Добро пожаловать!

Я Дож, программирование — моё хобби. По мере того, как я осваиваю что-то новое, стараюсь об этом написать пост.
На текущий момент в блоге затронуты следующие темы: vim, free pascal, lisp, forth, m4
Занимаюсь разработкой своего языка под названием DEmbro, подбробней: wiki и svn
Для постов, не связанных с программированием, у меня есть отдельное жж.

мая 27, 2009

Проблема с property record'ом

Имеем код


type
TVec2f = packed record
  X, Y: Single;
end;

TClass = class
private
  FVec: TVec2f;
  procedure SetVec(V: TVec2f);
public
  property Vec: TVec2f read FVec write SetVec;
end;
  
procedure TClass.SetVec(V: TVec2f);
begin
  FVec := V;
  Writeln(V.X, ' ', V.Y);
end;

var
  Obj: TClass;
  V: TVec2f;
begin
  Obj := TClass.Create;
  V.X := 100;
  V.Y := 1000;
  Obj.Vec := V;
  Obj.Vec.Y := 666;
  Writeln('Last value: ', Obj.Vec.Y);
end.


Код прекрасно компилируется. Вся соль в предпоследней строке Obj.Vec.Y := 666. Возникает несколько вопросов
1) Будет ли вызван Writeln при выполнении этой строки?
2) Что будет напечатано в самом конце?

Ответы


Читать дальше......

FPC 2.2.4

Полтора месяца прошло с появления FPC 2.2.4. С паскалем я, к сожалению, все это время дела не имел (использовал CodeGear Delphi 2009), а вот сегодня наконец пришлось.

Полный лог изменений в FPC 2.2.4.

Самое значимое - это полноценная поддержка generic'ов. А этого я ждал долго :) Теоретически, они были и раньше, но по факту при попытке специализации какого-то дженерика вываливалась ошибка "202 runtime error".

В скором времени перепишу паскалевский синтаксис в виме, чтобы слова generic и specialize подсвечивались.

Код с тестовым примером:


Читать дальше......

мая 03, 2009

Перерисовка окна

Иногда в виме окно оказывается замусоренным. Может помочь скроллинг вверх/вниз, но это не всегдая удобно. Более удобный способ - вызвать принудительную перерисовку:
      :redr!


Постоянные читатели

Обо мне

Моя фотография
Мой e-mail: vitek_03(at)mail(dot)ru