Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];
ВнизСообщение компилятра Найти похожие ветки
← →
Laguna © (2011-11-17 21:52) [0]В программе есть такой код
procedure TZ_ArendaFrm.LoadRegion;
Var
Node : TTreeNode;
PID : PTreeID;
i : Integer;
begin
Node := nil;
with TreeView1.Items do
begin
BeginUpdate;
Clear;
if RegInf.Kod in MogDomenSet then
for i := Low(Rups_A) to High(Rups_A) do
begin
New(PID);
PID.Kod := Rups_A[i].Kod;
Node := AddObject(Node, Trim(Rups_A[i].Name), PID);
end
else
begin
New(PID);
PID.Kod := RegInf.Kod;
Node := AddObject(Node, Trim(RegInf.Name), PID);
end;
EndUpdate;
end;
end;
Почему при компиляции на выделенной строке постоянно появляется предупреждение Value assigned to "Node" never used
← →
Jeer © (2011-11-17 22:01) [1]Блин.. ну лазают же тут полные д..
Ты дальше где Node используешь ?
Даже компилятор догадался :)
← →
Омлет © (2011-11-17 22:10) [2]Тебе перевести с английского?
← →
Laguna © (2011-11-17 22:13) [3]
> Jeer © (17.11.11 22:01) [1]
> Блин.. ну лазают же тут полные д..
А вот грубить на надо!
Я смотрю тут ваще предвзятое отношение "якобы спецов" к несовсем все знающим.
> Ты дальше где Node используешь ?
Нигде не использую. Дерево сформировал и все.
← →
Inovet © (2011-11-17 22:16) [4]Объявил Node, что-то присвоил ему, а зачем?
← →
Laguna © (2011-11-17 22:23) [5]
> Объявил Node, что-то присвоил ему, а зачем?
Ну что значит зачем? А как мне дерево сформировать, если не присваивать веткам имена, в моем случае еще и объект дополнительный.
← →
Омлет © (2011-11-17 22:27) [6]Тебе переменная Node зачем нужна?
Компилятор внятно говорит: "Значение, присвоенное Node, нигде не используется." - не понятно разве?
← →
Омлет © (2011-11-17 22:28) [7]Или ты думаешь, что при вызове любой функции обязательно надо присваивать результат переменной?
← →
Laguna © (2011-11-17 22:33) [8]
> Компилятор внятно говорит: "Значение, присвоенное Node,
> нигде не используется." - не понятно разве?
С английским я дружу.
По коду видно, что Node может принимать значение исходя из условия в том или ином случае. Почему же тогда на первую Node не ругается?
if RegInf.Kod in MogDomenSet then
for i := Low(Rups_A) to High(Rups_A) do
begin
New(PID);
PID.Kod := Rups_A[i].Kod;
Node := AddObject(Node, Trim(Rups_A[i].Name), PID); - 1
end
else
begin
New(PID);
PID.Kod := RegInf.Kod;
Node := AddObject(Node, Trim(RegInf.Name), PID); - 2
end;
← →
Inovet © (2011-11-17 22:33) [9]> [5] Laguna © (17.11.11 22:23)
> А как мне дерево сформировать, если не присваивать веткам
> имена, в моем случае еще и объект дополнительный.
После этого где он используется. Ты с таким гонором отвечаешь, как будто компилятор тупой и глючный, а заодно и все здеь кроме тебя, конечно, выдаёт тебе на пустом месте предупреждения. Тебе же сказали, - не используется, - так и посмотри где есть присвоение и неисползование после.
Node := AddObject(Node, ...
← →
Сусл_ (2011-11-17 22:36) [10]напиши просто
AddObject(Node, Trim(Rups_A[i].Name), PID);
и все. а node вообще удали. тебе эта переменная не нужна просто.
← →
Сусл_ (2011-11-17 22:37) [11]не чот не то сказал)))
во втором случае убире Node := а в первом оставь.
← →
Laguna © (2011-11-17 22:38) [12]Ну можно так завершить, только всеравно пердупреждение появляется.
...
else
begin
New(PID);
PID.Kod := RegInf.Kod;
Node := AddObject(Node, Trim(RegInf.Name), PID); - 2
end;
Node := TreeView1.Items[0];
TreeView1.Selected := Node;
← →
Сусл_ (2011-11-17 22:39) [13]и лучше писать
beginudpdate;
try
...
finally
endupdate;
end;
← →
Омлет © (2011-11-17 22:40) [14]> Сусл_ (17.11.11 22:36) [10]
Node у него используется в AddObject как родительская ветка.
← →
Сусл_ (2011-11-17 22:40) [15]ты чот код изменил.
в исходном нет Selected.
если в исходном уберешь Node := во втором случае, то предупрж. не будет.
← →
Сусл_ (2011-11-17 22:41) [16]
> Омлет © (17.11.11 22:40) [14]
> > Сусл_ (17.11.11 22:36) [10]
>
> Node у него используется в AddObject как родительская ветка.
>
да понял я, поправился уже. я про второе присвоение
← →
Плохиш © (2011-11-17 22:44) [17]
> Почему же тогда на первую Node не ругается?
Круто, оно даже не понимает, чë же оно там накодило...
← →
Laguna © (2011-11-17 22:46) [18]> Сусл_ (17.11.11 22:40) [15]
> ты чот код изменил. в исходном нет Selected.если в исходном
> уберешь Node := во втором случае, то предупрж. не будет.
Да, действительно не появляется сообщение как убрал во втором месте Node. И первый и второй случай равнозначны по применению. Просто в зависимости от условия дерево состит или (к примеру) из 20 веток или только из одной.
← →
Jeer © (2011-11-17 22:54) [19]
> Да, действительно
Когда дойдет, что надо составлять КА, анализировать все возможные исходы и принимать во внимание возможность неиспользования в какой-либо ветке переменной(ных) - приходи опять.
Побеседуем вновь.
← →
Laguna © (2011-11-17 23:01) [20]Все, кажется я понял.
Изначально Node = Nil. В первом блоке Node переприсваивается и используется потому что учавствует в цикле и слушит точкой отсчета для следующей. А там где формируется только одна ветка достаточно было написать TreeView1.Items.AddObject(Node...) Поэтому внутри With будет правильным AddObject(Node(или Nil)...
...
with TreeView1.Items do
AddObject(Node, Trim(RegInf.Name), PID);
...
← →
Сусл_ (2011-11-17 23:07) [21]все верно понял.
← →
Laguna © (2011-11-17 23:18) [22]> Сусл_ (17.11.11 22:37) [11]
> во втором случае убире Node := а в первом оставь.
Спасибо за наводочку ;)
← →
Jeer © (2011-11-17 23:43) [23]Удалено модератором
← →
Jeer © (2011-11-18 00:02) [24]Удалено модератором
← →
Германн © (2011-11-18 00:24) [25]Удалено модератором
← →
Игорь Шевченко © (2011-11-18 00:35) [26]
> Почему при компиляции на выделенной строке постоянно появляется
> предупреждение Value assigned to "Node" never used
> А вот грубить на надо!
> Я смотрю тут ваще предвзятое отношение "якобы спецов" к
> несовсем все знающим.
Ты тоже можешь стать знающим, встав на ошибку и нажав на кнопку F1.
Для этого не требуется писать на форум.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2012.02.26;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.006 c