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

Вниз

Непонятка с TTreeView   Найти похожие ветки 

 
Wood   (2008-10-03 11:22) [0]

Добрый день!
Что-то заклинило у меня.. Хотел получить первый нулевой уровень по отношению к дочернему 1-му уровню
код:

1. tv1: TTreeView
...
2. var
3.  Node: TTreeNode;
4.  ind: integer;
5. begin
6.  if tv1.Selected.Level<>0 then
7.   begin
8.     Node:=tv1.Selected;
9.       While Node<>nil do
10.         begin
11.          Node:=Node.GetPrev;
12.          if node<>nil then
13.           begin
14.            if Node.Level=0 then
15.             begin
16.              Ind:=TNodeData(Node).sInd;
17.              break;
18.             end;
19.           end;
20.         end {while};
21.       end else
22.        Ind:=TNodeData(TV1.Selected).sInd;
23. end;

Проверяю трассировкой стр. 14. if Node.Level=0:  Node.Level действительно равно 0, но после этой строки условие не выполняется и уходит на 23.


 
Поросенок Винни-Пух ©   (2008-10-03 11:28) [1]

значит там false


 
{RASkov} ©   (2008-10-03 11:33) [2]

Дык там же Брик... Break


 
{RASkov} ©   (2008-10-03 11:35) [3]

> Проверяю трассировкой стр. 14. if Node.Level=0:  Node.Level
> действительно равно 0, но после этой строки условие не выполняется
> и уходит на 23.

Всё верно.... Брик туда и "выкидывает".... Что не так?


 
Wood   (2008-10-03 11:37) [4]


> значит там false

кхм...
Дерево состоит из 3 итемов: один - 0-го уровня и два - 1-го уровня. Визуально (в трассировщике) и логически, когда tv1.Selected.Level=1 (т.е., 2 или 3-й итем в дереве)  , к примеру "встаем" на 2-й итем, после первого же Node:=Node.GetPrev Node.Level равняется и должен равняться 0.
Если бы Node не равнялся 0 цикл бы продолжился, а не уходил сразу в 23


 
Wood   (2008-10-03 11:40) [5]

уважаемый {RASkov}, я убирал бряк, все равно..:( по логике если условие верно (уровень равен 0) то должно выполниться условие между 13 и 19, или как?


 
Поросенок Винни-Пух ©   (2008-10-03 11:42) [6]

я убирал бряк, все равно

там фалсе, чувак. фалсе.


 
Wood   (2008-10-03 11:42) [7]

Что-то, господа мастера, я ничего не понимаю.. Почему в моем коде действия между 15 и 18 вообще не хотят рассматриваться компилятором?:(


 
Поросенок Винни-Пух ©   (2008-10-03 11:44) [8]

if node<>nil then
13.           begin
                 //Вставить сюда шоумесадж с капшеном нода, чтобы убедиться, что это не тот нод, про который ты уверен, что его левел равен нулю
14.            if Node.Level=0 then


 
Поросенок Винни-Пух ©   (2008-10-03 11:46) [9]

а если инд не используется больше нигде, то оптимизатор вправе вообьще выбросить твой иф


 
Wood   (2008-10-03 11:49) [10]


> Поросенок Винни-Пух ©   (03.10.08 11:44) [8]

вставлял.. Перечисляются ноды.тексты, которые идут вверх по итерации, вплоть до нулевого уровня.
Но я нашел проблему почему не выполнялся код.. Сорри за введение в заблуждение..
Не посмотрел хинт компилятора:
16.  Ind:=TNodeData(Node).sInd;
далее не использовался, а на break остановки не происходит..
Спасибо за участие.
PS: level действительно был true


 
{RASkov} ©   (2008-10-03 11:52) [11]

> [9] Поросенок Винни-Пух ©   (03.10.08 11:46)

А он таки нигде у него в коде из [0] и не используется.... :)

Автор, хватит юлить....)


 
{RASkov} ©   (2008-10-03 11:52) [12]

Упс :)


 
Поросенок Винни-Пух ©   (2008-10-03 13:03) [13]

а зачем надо было врать, что трассировка доходит до ифа и что иф идет не по той ветке?


 
Wood   (2008-10-03 16:05) [14]


> Поросенок Винни-Пух ©   (03.10.08 13:03) [13]

Истинная правда! f7 кнопка, знаешь? Дык вот, после ифа, при нажатии ее, сразу уходило в 23, не останавливаясь на break. Я, честное пионерское, никогда не сталкивался с тем, что брейкпойнт не останавливается на break
Ну, ступил я с неиспользуемой переменной, бывает.. особенно в конце рабочего дня, но врать, ни-ни.. Зачем бы мне тогда здесь напрягать мастеров по чем зря...



Страницы: 1 вся ветка

Текущий архив: 2008.11.16;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.014 c
2-1223376642
DelphiN!
2008-10-07 14:50
2008.11.16
Помогите с оптимизацией SQL запроса


2-1223535329
engine
2008-10-09 10:55
2008.11.16
WebServices


4-1200030765
Михаил Макушев
2008-01-11 08:52
2008.11.16
Access violation prin вызове ф-ции CryptoAPI


2-1223449935
JustI
2008-10-08 11:12
2008.11.16
TLargeIntField


2-1223020665
Int23
2008-10-03 11:57
2008.11.16
Сколько тиков в часе в Вин64