> Последний известный мне нормальный компилятор плюсов от борланда датируется
> 2000 годом.
>
> По сравнению с VC8 - не то что бы гуано полное. Но реально как стремно уже
> им пользоваться :)
>
> Коваленко Дмитрий.

А почему нельзя сравнить с его ровесником VC5.0 ? :)

На самом деле я не об этом. Я понимаю, что Джефф Оверкэш не только у
меня никогда не станет в авторитете, но все же ...
Ести в IBX такой модуль "IBHeader.pas", где переписаны на паскале
некоторые Си-шные макросы (приведены в скобках), дабы была 100%
чистота. Попробуйте объяснить вот эти куски в скобках и сами процедуры
на Паскале изучающим программирование детям и почувствуйте разницу в
понимании материала. :)

function getb(p: PBSTREAM): Char;
(*  The C-macro reads like this:
   getb(p) (--(p)->bstr_cnt >= 0 ? *(p)->bstr_ptr++ & 0377: BLOB_get
(p)) *)
begin
  Dec(p^.bstr_cnt);
  if (p^.bstr_cnt >= 0) then
  begin
    result := Char(Int(p^.bstr_ptr^) and Int(0377));
    Inc(p^.bstr_ptr);
  end
  else
    result := Char(BLOB_get(p));
end;

function putb(x: Char; p: PBSTREAM): Int;
(*  The C-macro reads like this:
   putb(x,p) ((x == '\n' || (!(--(p)->bstr_cnt))) ? BLOB_put (x,p) :
((int) (*(p)->bstr_ptr++ = (unsigned) (x)))) *)
begin
  Dec(p^.bstr_cnt);
  if (x = Chr(Int('n') - Int('a'))) or (p^.bstr_cnt = 0) then
    result := BLOB_put(x, p)
  else
  begin
    p^.bstr_ptr^ := Char(x);
    result := UInt(x);
    Inc(p^.bstr_ptr^);
  end;
end;

function putbx(x: Char; p: PBSTREAM): Int;
(*  The C-macro reads like this:
   putbx(x,p) ((!(--(p)->bstr_cnt)) ? BLOB_put (x,p) : ((int) (*(p)-
>bstr_ptr++ = (unsigned) (x)))) *)
begin
  Dec(p^.bstr_cnt);
  if (p^.bstr_cnt = 0) then
    result := BLOB_put(x, p)
  else
  begin
    p^.bstr_ptr^ := Char(x);
    Inc(p^.bstr_ptr^);
    result := UInt(x);
  end;
end;

Ответить