Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Класс / 20 сообщений из 20, страница 1 из 1
18.01.2016, 09:57
    #39149345
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
Здравствуйте!

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



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

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

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

По логике же "mПеременная" и "Переменная" должны быть равны. Разве не так?Хм, мне нечего добавить к тому, что я сказал выше.
...
Рейтинг: 0 / 0
18.01.2016, 12:19
    #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
18.01.2016, 12:37
    #39149513
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
используй Variant как тип свойства
...
Рейтинг: 0 / 0
18.01.2016, 13:35
    #39149588
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
Не получается
...
Рейтинг: 0 / 0
18.01.2016, 20:43
    #39150110
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
Код: vbnet
1.
Property Get Переменная() As String()
...
Рейтинг: 0 / 0
19.01.2016, 01:09
    #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
19.01.2016, 01:11
    #39150204
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
Хотелось чтобы и размерности, и значения совпадали
...
Рейтинг: 0 / 0
19.01.2016, 01:28
    #39150210
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
Ты хочешь, чтобы свойство, тип которого определяется при компиляции, имел тип, который ты задаешь в рантайме с помощью Redim? Не выйдет, конечно.

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

Я хочу создать класс, в котором свойство как массив. Может надо по другому такой класс создавать?
...
Рейтинг: 0 / 0
19.01.2016, 10:39
    #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
19.01.2016, 15:57
    #39150756
ferzmikk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Класс
Shocker.Pro,

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

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


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