Как поправил.
Чисто логически нужно размещать меньшую переменную в памяти большей
bb:packed record
Height:word;
Width:word;
ShiftWidth:word;
end;
Bound:integer absolute bb;
Height:word;
Width:word;
ShiftWidth:word;
end;
Bound:integer absolute bb;
НО, конкретно в этой процедуре в этом нет никакой необходимости, так как наружу из процедуры требуется выдать только bb.Height + bb.Width, а ShiftWidth - это обычная локальная переменная. Поэтому предлагаю code_30102.txt
[offtop]А вот имитация, на которой баг таки вылазит: test absolute bug.sha[/offtop]
------------ Дoбавленo в 12.45:
faniss, твой code_30085.txt в Delphi тоже стабильно падает, так что в этом случае причина не в компиляторе, а в особенностях работы паралельных потоков с визуальными компонентами (да и многими другими, которые не тестировались на такое использование). Проблема с TCP пока остается.