Форум: "Основная";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
ВнизВ чем разница... Найти похожие ветки
← →
Дмитрий К.К. (2002-10-26 14:48) [0]... между строчкой
with TreeView.Items do
и строчкой
with TreeView, Items do
?
← →
AngeL B. (2002-10-26 17:19) [1]В первом случае ты оказызываешься внутри объекта TreeView.Items и компилятор неявно пытается подставить этот объект перед всеми идентификаторами внутри блока. То есть код оказывается в пространстве имен одного объекта.
Во втором - ты указываешь что ты одновременно хочешь расширить пространство имен на два объекта (можно больше).
При этом подразумевается существование как переменной TreeView, так и переменной Items, причем на одном уровне видимости. Во втором случае Items не внутри TreeView, а отдельная переменная.
Пример для большей ясности.
type
TA = record
_A, _B: Integer;
end;
TB = record
_C, _D: Integer;
end;
...
with A, B do _A := _D;
← →
Набережных С. (2002-10-26 17:44) [2]В первом варианте в блоке with можно оперировать членами TreeView.Items, во втором - и TreeView, и TreeView.Items. При этом, если имеется некая внешняя переменная Items, то внутри блока with она будет недоступна.
← →
Юрий Зотов (2002-10-26 20:49) [3]> причем на одном уровне видимости
Нет. Не на одном, а начиная с последнего. Сначала - Items, потом - TreeView. Это значит, что если у них есть одноименное свойство или метод, то будет подразумеваться Items, а не TreeView.
> Во втором случае Items не внутри TreeView, а отдельная переменная.
Нет. Будет подразумеваться именно тот Items, который TreeView.Items. Поскольку перед Items уже было with TreeView.
← →
AngeL B. (2002-10-26 22:59) [4]
> 2 Юрий Зотов
После прочтения Object Pascal Reference вынужден признать вашу правоту. :) Они действительно вкладываются друг в друга.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.11.07;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.007 c