powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Класс
20 сообщений из 20, страница 1 из 1
Класс
    #39149345
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!

При создании объекта класса - создается массив. Но как то некорректно создается



Почему так? Как правильно написать?
...
Рейтинг: 0 / 0
Класс
    #39149353
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу картинку выложить
...
Рейтинг: 0 / 0
Класс
    #39149383
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приложи к сообщению.
...
Рейтинг: 0 / 0
Класс
    #39149413
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Класс
    #39149418
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
При создании объекта класса - создается массив. Но как то некорректно создается

Почему так? Как правильно написать?
...
Рейтинг: 0 / 0
Класс
    #39149428
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"mПеременная" - это массив String, а свойство "Переменная" - это String
отсюда несоответствие типов
...
Рейтинг: 0 / 0
Класс
    #39149447
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

По логике же "mПеременная" и "Переменная" должны быть равны. Разве не так?
...
Рейтинг: 0 / 0
Класс
    #39149454
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ferzmikkShocker.Pro,

По логике же "mПеременная" и "Переменная" должны быть равны. Разве не так?Хм, мне нечего добавить к тому, что я сказал выше.
...
Рейтинг: 0 / 0
Класс
    #39149493
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Обычно если использовать "mПеременная" и "Переменная" как String. То с помощью Let и Get они равны. А вот с массивами запутался. Может здесь отдельный Let и Get надо прописывать или текущие Let и Get изменить. Хочу, чтобы при инициализации массив "mПеременная" равнялся "Переменная". Я с классами не до конца разобрался.

Код: vbnet
1.
2.
3.
4.
5.
Public Const РазмерМассива As Long = 20
Sub Макрос()
    Dim Класс As Класс
    Set Класс = New Класс
End Sub



Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit
Private mПеременная() As String
Property Let Переменная(name As String)
    mПеременная = name
End Property

Property Get Переменная() As String
    Переменная = mПеременная
End Property

Private Sub class_initialize()
    ReDim mПеременная(1 To РазмерМассива)
End Sub



Переписываю код так - не работает
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit
Private mПеременная() As String
Property Let Переменная(name() As String)
    mПеременная() = name()
End Property

Property Get Переменная() As String
    Переменная() = mПеременная()
End Property

Private Sub class_initialize()
    ReDim mПеременная(1 To РазмерМассива)
End Sub
...
Рейтинг: 0 / 0
Класс
    #39149513
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используй Variant как тип свойства
...
Рейтинг: 0 / 0
Класс
    #39149588
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получается
...
Рейтинг: 0 / 0
Класс
    #39150110
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: vbnet
1.
Property Get Переменная() As String()
...
Рейтинг: 0 / 0
Класс
    #39150203
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Antonariy,

Переписал так

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
Option Explicit
Private mПременная() As Variant
Property Let Переменная(name() As Variant)
    mПеременная() = name()
End Property

Property Get Переменная() As Variant()
    Переменная() = mПеременная()
End Property

Private Sub class_initialize()
    ReDim mПеременная(1 To РазмерМассива)
End Sub



Теперь типы "mПеременная" и "Переменная" соответствуют, но не равны
...
Рейтинг: 0 / 0
Класс
    #39150204
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось чтобы и размерности, и значения совпадали
...
Рейтинг: 0 / 0
Класс
    #39150210
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты хочешь, чтобы свойство, тип которого определяется при компиляции, имел тип, который ты задаешь в рантайме с помощью Redim? Не выйдет, конечно.

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

Я хочу создать класс, в котором свойство как массив. Может надо по другому такой класс создавать?
...
Рейтинг: 0 / 0
Класс
    #39150354
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Антонарий же написал - как.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Option Explicit

Dim t() As String


Public Property Get u() As String()

u = t

End Property
Public Property Let u(new_u() As String)

t = new_u

End Property


Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Private Sub Command1_Click()

Dim cl As New Class1
Dim arr() As String
ReDim arr(5)
arr(3) = "bebebe"
cl.u = arr

MsgBox cl.u()(3)

End Sub
...
Рейтинг: 0 / 0
Класс
    #39150756
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

Получилось, спасибо!
...
Рейтинг: 0 / 0
Класс
    #39157240
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
интересно что "name" еще не материлось. использовать название команд и функций в названии переменных уже грех)
...
Рейтинг: 0 / 0
Класс
    #39157344
ferzmikk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей159интересно что "name" еще не материлось. использовать название команд и функций в названии переменных уже грех)

У Вас есть более оптимальное решение?)
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Класс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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