Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> VB: дерево 
:(
    Опции темы
lorien
Дата 26.4.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



Помогите плиз. Надо реализовать именно на VBA кое-какой алгоритм, но не в алгоритме дело.
В общем я хочу реализовать дерево (у каждого узла может быть несколько веток)

Как это ваще на бэйсике то делать? :-/ Я на бэйсике никогда не программил - так что вообще в непонятках полных.
PM WWW   Вверх
Naghual
Дата 26.4.2005, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



При помощи классов, я думаю, будет проще, нагляднее и понятнее.

Создай класс TreeItem со всеми необходимыми свойствами.
Создай класс ItemsCollection который будет хранить в себе Collection класса TreeItem.
В класс TreeItem, добавь свойство Childrens as ItemsCollection.
А в класс ItemsCollection добавь свойство Parent as TreeItem.

Вот, примерно, и вся структура дерева.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
cardinal
Дата 26.4.2005, 20:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Откуда не помню, но вот она - структура:

Присоединённый файл ( Кол-во скачиваний: 18 )
Присоединённый файл  Tree_Structure.zip


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
lorien
Дата 26.4.2005, 23:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



А где можно почитать про ООП в VB6 ?
Чё-то не получается.
Сделал класс:
Код

Public parent As Tree
Public label As String
Public Childs As Collection

Public Function Show()
    Dim str As String
    For Each child In Childs
        str = str & child.Show()
    Next
Show = str
End Function

Потом в таком коде вылазит ошибка:
Код

Dim head As New Tree

Sub Test3()
    head.label = "1"
    Dim item As New Tree
    item.label = "33"
    head.Childs.Add(item, "33")  'Тут вылазит ошибка Object variable or With block variable not set (Error 91)
    MsgBox head.Show
End Sub


Пардон, если там полная фигня, ну не работал я раньше с VB...

Это сообщение отредактировал(а) lorien - 26.4.2005, 23:56
PM WWW   Вверх
Naghual
Дата 27.4.2005, 09:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Вероятнее всего, у тебя не проинициализированна Childs.
Тебе в VB или VBA нужно?


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
lorien
Дата 27.4.2005, 09:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



А разве есть разница? Я тут скачал. "vb and vba in a nutshell" о'рейли.. Вроде проясняться стало всё... Хотя там тоже что-то про ООП мало написано, а может и писать то нечего? %-)
Я не понял как конструктор сделать...
Код
 Вероятнее всего, у тебя не проинициализированна Childs.

Да, ты прав. Всё заработало после замены public Childs As Collection на public Childs as new Collection

Это сообщение отредактировал(а) lorien - 27.4.2005, 09:46
PM WWW   Вверх
Naghual
Дата 27.4.2005, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Цитата
А разве есть разница?

Да есть. И принципиальная.
Хотя, для твоего вопроса наверное таки нет разницы. smile


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Exception
Дата 27.4.2005, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Вообще-то VB 6/VBA не особо оопэшные. Для таких целей больше подходит VB .NET (если под дотнет) или C++ / Delphi. Просто если тебе нужно наследование и все такое... конструкторы, деструкторы...
PM   Вверх
lorien
Дата 27.4.2005, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



Мне ничего не нужно. Просто написать эту программу и забыть VB как страшный сон. Я фрилансер и зачем-то поставил бид на проект на VB.
PM WWW   Вверх
lorien
Дата 27.4.2005, 14:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



Хочу рекурсивную процедуру написать. Передаю в процедуру объекта, а басик ругаецца:
Код

Set node = New Tree
node.label = records(1).value
buffer.add records(1).value
For Each link In records(1).links
    node.Childs.add link
Next
    
test (node)

Object doesn't support this property or method

Как передавать объекты в процедуры?
PM WWW   Вверх
Naghual
Дата 27.4.2005, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Нужно смотреть что такое link и что такое links.
Да и вообще, мало информации. Кто тебя знает, что ты там за дерево наваял.
Добавлено @ 14:31
И потом. Функция Add у тебя параметризованная - к примеру Function Add(Caption as String, Key as String).
Создай дополнительную функцию:
Function AddObject(ChildNode as Tree)




--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
lorien
Дата 27.4.2005, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



Так там всё страшно, я уже всё понял и осознал.
Скажите теперь лучше как можно коллекцию скопировать?
PM WWW   Вверх
Exception
Дата 27.4.2005, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 4525
Регистрация: 26.12.2004

Репутация: 7
Всего: 186



Поконкретнее можешь?
PM   Вверх
Naghual
Дата 27.4.2005, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Передачей параметру функции объявленного ByVal.


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
cardinal
Дата 27.4.2005, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Модератор: Пожалуйста, один топик - один вопрос.
Правила форума: http://forum.vingrad.ru/index.php?s=&act=SR&f=27


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
lorien
Дата 1.5.2005, 08:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 16.11.2004
Где: omsk

Репутация: нет
Всего: 3



Ты хочешь чтобы я засорил форум кучей чайниковых вопросов, что ли?
Код
 Передачей параметру функции объявленного ByVal. 

Неа, коллекция изменяется.Вот пример
Код

Sub test()
    Dim buffer As New Collection
    buffer.add 13, "13"
    Call test2(buffer)
    Dim str As String
    For Each item In buffer
        str = str & item & ","
    Next
    MsgBox str
End Sub

Sub test2(ByVal buffer As Collection)
    buffer.add 666, "666"
End Sub

Получим сообщение "13,666"
PM WWW   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.