Форум: "Начинающим";
Текущий архив: 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.006 c