Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1321552371
Laguna
2011-11-17 21:52
2012.02.26
Сообщение компилятра


2-1320762578
я
2011-11-08 17:29
2012.02.26
Вывод сообщения на экран


15-1320861739
Вспученный
2011-11-09 22:02
2012.02.26
Как посмотреть видео в контакте с ошибкой доступа?


2-1321861435
pavor
2011-11-21 11:43
2012.02.26
Чтение атрибутов из файла XML


2-1321086771
Vladimir
2011-11-12 12:32
2012.02.26
Сохранение и загрузка зашифрованного текста в Delphi 2009





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский