Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.02.26;
Скачать: CL | DM;

Вниз

Сообщение компилятра   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.009 c
2-1320945193
Кирил_Антонович
2011-11-10 21:13
2012.02.26
Небольшая сетевая БД


2-1321534792
upc
2011-11-17 16:59
2012.02.26
Не дать показаться форме


15-1320758892
DVM
2011-11-08 16:28
2012.02.26
Помогите переписать функцию с ASM на Pascal или C


15-1320770585
TUser
2011-11-08 19:43
2012.02.26
Скорость обучения перлу


2-1321438146
Aleks
2011-11-16 14:09
2012.02.26
Автозагрузка проги в Windows XP sp3