Вверх ↑
Ответов: 4620
Рейтинг: 746
#1: 2013-01-18 12:45:48 ЛС | профиль | цитата
Почему не выдает ошибку - зависит от многих факторов, типа выравнивания локальных переменных - простых и record - в стеке, размещения в стеке входных параметров функций и возвращаемых результатов, которое в частности зависит и от настроек компилятора.
Как поправил.
Чисто логически нужно размещать меньшую переменную в памяти большей
bb:packed record
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 пока остается.
карма: 26

2
файлы: 1code_30102.txt [1.9KB] [471]
Голосовали:nesco, faniss