powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Про класс
17 сообщений из 17, страница 1 из 1
Про класс
    #39432042
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

Создаю такой класс, где свойство задается как массив и как тип ссылается на другой класс.

На этой строке вылезает ошибка
Код: vbnet
1.
Объект(i).Меры()(1).Мера = Лист.Cells(i + 1, 2)
...
Рейтинг: 0 / 0
Про класс
    #39432043
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ошибка возникает здесь
...
Рейтинг: 0 / 0
Про класс
    #39432046
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Про класс
    #39432049
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Где тут упущение?
...
Рейтинг: 0 / 0
Про класс
    #39432161
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У Вас нет метода ПРИСВОЕНИЯ значения ОДНОМУ элементу компонента-массива.
...
Рейтинг: 0 / 0
Про класс
    #39432277
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AkinaУ Вас нет метода ПРИСВОЕНИЯ значения ОДНОМУ элементу компонента-массива.
Написал так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
Private Sub Class_Initialize()
ReDim mМеры(1 To 4)
Dim i As Long
For i = 1 To 4
    Set mМеры(i) = New Меры
Next i
End Sub


заработало
...
Рейтинг: 0 / 0
Про класс
    #39433408
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В классе Объект добавляю свойство СубОбъект и указываю тип данных как другой класс СубОбъект, но не как массив .
Если запускать, то показывает такую ошибку
...
Рейтинг: 0 / 0
Про класс
    #39433410
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если добавить строку

Код: vbnet
1.
2.
3.
4.
Private Sub Class_Initialize()
...
Set mСубОбъект = New СубОбъект
End Sub


то показывает другую ошибку.
...
Рейтинг: 0 / 0
Про класс
    #39433415
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что тут не так? Как правильно написать?
...
Рейтинг: 0 / 0
Про класс
    #39433489
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkЧто тут не так? Как правильно написать?Если так написать, то работает
Код: vbnet
1.
2.
3.
4.
5.
6.
Private mСубОбъект() As New СубОбъект
...
Private Sub Class_Initialize()
redim mСубОбъект (1 to 1)
Set mСубОбъект(1) = New СубОбъект
End Sub


но получается массив из одного элемента. Но как сделать так, чтобы был не массив?
...
Рейтинг: 0 / 0
Про класс
    #39433558
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот еще.

В классе СубОбъект вызываю метод Рассчитать, который обращается к данным из другого уровня класса. Свойство Parent отсутствует.

Как это можно сделать?
...
Рейтинг: 0 / 0
Про класс
    #39433559
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Про класс
    #39434217
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Представлены два варианта сетеров и гетеров. При первом варианте работает код. При втором варианте нет. Но учитывая такой фактор, что класс ссылается на другой класс как массив, то логичнее прописывать не LET, а SET. Только во втором варианте где указан SET почему то не работает код.

Что упущено? Как правильно написать?
...
Рейтинг: 0 / 0
Про класс
    #39434218
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл прикладываю
...
Рейтинг: 0 / 0
Про класс
    #39434288
ferzmikk,

без внятного ТЗ мало у кого с потоком сознания возникнет желание разобраться.
Не можете/хотите формализовать свои желания (без примесей своего видения реализации), так и будете сам с собой общаться.

По доброму, как говорится.
...
Рейтинг: 0 / 0
Про класс
    #39434326
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Создается класс Объект. У Объекта есть свойство Меры в виде массива с типом Меры, то есть другой класс.
Написал макрос, который строит такой Объект.

Вариант1 . В Объекте задал такие сетеры и гетеры .
Код: vbnet
1.
2.
3.
4.
5.
6.
Property Get Меры() As Меры()
     Меры = mМеры
End Property
Property Let Меры(Name_Меры() As Меры)
    mМеры = Name_Меры
End Property


При первом варианте код работает нормально.


Вариант2 . Поскольку Меры это класс, а не примитивный тип данных, то правильнее указывать не LET , а SET .
Код: vbnet
1.
2.
3.
4.
5.
6.
Property Get Меры() As Меры()
     Set Меры = mМеры
End Property
Property Set Меры(Name_Меры() As Меры)
    Set mМеры = Name_Меры
End Property


При втором варианте код не работает.

Почему не работает? Как правильно написать?
...
Рейтинг: 0 / 0
Про класс
    #39434333
ferzmikk,

1) Вы повторили то, что уже говорили. Это не ТЗ.
2) Вы спрашиваете "как правильно", но никто из нетелепатов не знает тот самый идеальный случай, с которым надо сравнивать, он не описан. Невозможно сравнить, невозможно сказать, что неправильно.
3) "Массив" - это деталь реализации (позволю самоцитирование: "примесь своего видения реализации"). Массив как структура данных обладает вполне конкретными свойствами: время выполнения операций по оценке "О большое", непрерывность в памяти, наличие итератора. Для этой задачи все эти свойства (и именно такие) нужны?
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Про класс
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]