Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Рекурсивный тип Добавлено: 01.05.04 18:26  

Автор вопроса:  Дмитрий Щапов

Короче объявляю так:

Private Type TPE

Caption As String

Group As String

PodEl() As TPE 'хрень полная

End Type

А он мне, мол, так нельзя. А я ему по-другому:

Private Type TPE2

El() As OCX_MenuXP_element_type

End Type

Private Type TPE

Caption As String

Group As String

PodEl() As TPE2

End Type

А он мне на TPE2 говорит что тип ещё не объявлен. Но как???

И ещё:

Как меню добавить(где добавить там и удалить, где удалить там и...)?! ХЭЭЭЭЭЛП!

С APIсковыми ф-ми возня непонятная, стандартные ср-ва урезанные!

Ответить

  Ответы Всего ответов: 13  

Номер ответа: 1
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #1
Добавлено: 01.05.04 23:09

Все используемые типы в типе :) должны быть объявлены в тексте ПЕРРЕД объявлением того самого типа :) Кто понял что я сморозил :) ?

Ответить

Номер ответа: 2
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #2 Добавлено: 02.05.04 07:04

Да что ему надо это я понял, но вот как это забацать???? Вообще мне надо-то первый случай отделать(с 1м типом), чтоб он указывал сам на себя(но это не бесконечная рекурсия). А во 2м случае как ни крути всёравно error получается :(

P.S. Я понял чё ты там сморозил.

Ответить

Номер ответа: 3
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #3
Добавлено: 02.05.04 12:09

:) Тогда я не понял что сморозил ты :)

Что вообще требуется, что есть такое рекурсивный тип, и почему два раза объявляется TPE... Я попросту не могу понять что же вообще требуется, объясни бестолковому :)

Ответить

Номер ответа: 4
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #4 Добавлено: 02.05.04 22:11

Короче проба снимается, пришлось организовать с помощью класса, но хотелось бы найти решение - интересно знать. Но вижу что форумяне этого незнать.

Значит так, объясняю:

НАДО (повторяю - НАДО) ВОТ ТАК -

'''''''''''''''''''''''''''''''''''

1 Private Type TPE

2 Caption As String

3 Group As String

4 PodEl() As TPE 'хрень полная

5 End Type

''''''''''''''''''''''''''''''''''''

Это понятно? Ладно, потом ответишь... Next

Вот попробуй так написать, компиляра тебе в морду даст следующее (переведено) "Здравствуй Вася, пишу тебе из далекого процессора. Вот тут ты неправильно сделал,-указывает на строку 4,-быра сделай по-другому!"

Понял??? т.е. тип "вызывает" сам себя и комп боится что это будет до бесконечности, а это сам знаешь чем грозит. Но прикол в том, что это до бесконечности не будет! N-ый массив PodEl() - будет EMPTY!!!

Смешно? Понятно?

Ответить

Номер ответа: 5
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #5
Добавлено: 03.05.04 01:41

Ну и загнул :) А зачем тебе такой изврат-то хоть ? Ума ни приложу куда это можно "засунуть" :D

Ответить

Номер ответа: 6
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #6 Добавлено: 03.05.04 17:22

Военная тайна... Если скажу, то придется тебя убить...

Ответить

Номер ответа: 7
Автор ответа:
 sne



Разработчик Offline Client

ICQ: 233286456 

Вопросов: 34
Ответов: 5445
 Web-сайт: hw.t-k.ru
 Профиль | | #7
Добавлено: 03.05.04 22:57

:) Тогда лучше промолчать :) уж оччень жить хочится

Ответить

Номер ответа: 8
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #8 Добавлено: 05.05.04 10:06

Слуш, ну это ж бред полный, сам то хоть пойми что пишешь. Как ты надеешься определить тип на основе самого себя? Все поля в типе должны быть объявлены!!! Ты же хочешь реализовать бесконечную рекурсию, да еще и на основе неопределенного типа.

Вот такая штука пройдет

Private Type TPE

Caption As String

Group As String

End Type

Private Type TPE2

Caption As String

Group As String

PodEl() As TPE

End Type

А насчет

Private Type TPE2

El() As OCX_MenuXP_element_type

End Type

он и будет говорить если OCX_MenuXP_element_type не объявлен!

Ответить

Номер ответа: 9
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #9 Добавлено: 05.05.04 11:33

Верно, НО(опять это е@баное НО), по твоему плану: объявил я Per1 as TPE2

И что имею:

per1.group

per1.caption

А вот per1.podel() уже нету!

Ответить

Номер ответа: 10
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #10 Добавлено: 05.05.04 14:24

Это почему это?

Option Explicit

Private Type TPE

Caption As String

Group As String

End Type

Private Type TPE2

Caption As String

Group As String

PodEl() As TPE

End Type

Private Sub Form_Load()

Dim Per1 As TPE2

Per1.Caption = "Hello"

Per1.Group = "World"

ReDim Per1.PodEl(10)

Per1.PodEl(5).Caption = "Bye"

Per1.PodEl(3).Group = "Ok"

End Sub

Ответить

Номер ответа: 11
Автор ответа:
 Дмитрий Щапов



Вопросов: 71
Ответов: 321
 Профиль | | #11 Добавлено: 06.05.04 13:49

Хе,

Не. Я наверно недописал.

Смотри мне надо > Per.Podel().PeodEl().Podel()... хоть до смерти печатай.

А получается как? А вот так > (верно podel есть )

per1.podel().Podel - нет! в типе TPE podel - нет!

Ответить

Номер ответа: 12
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #12 Добавлено: 06.05.04 14:50

А, ну это ты размечтался...

Делай массивом. Это тебе не функция, тут рекурсив не прокатит.

Ответить

Номер ответа: 13
Автор ответа:
 Fallout



Вопросов: 10
Ответов: 387
 Web-сайт: mudator.by.ru
 Профиль | | #13
Добавлено: 06.05.04 18:47

VB это не поддерживает тема закрыта и что тут флудить. Читал как то в своё время МСДН +)

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам