Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];

Вниз

Непонятка с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.005 c
4-1200030765
Михаил Макушев
2008-01-11 08:52
2008.11.16
Access violation prin вызове ф-ции CryptoAPI


2-1222753628
lod
2008-09-30 09:47
2008.11.16
Компонент dxDBTreeView1


15-1221562788
desc
2008-09-16 14:59
2008.11.16
Как в Dll работать с набором данных ?


2-1223377181
Евгений Р.
2008-10-07 14:59
2008.11.16
как правильно сравнить процедуры


2-1223287456
Dennis I. Komarov
2008-10-06 14:04
2008.11.16
MDI из DLL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский