powered by simpleCommunicator - 2.0.54     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / For Each
12 сообщений из 12, страница 1 из 1
For Each
    #37507146
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не могу понять почему не работает.
Создал клас ClsPlayer
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Public LenTrack As Long
Public PotPosicion As Long
Public Volume As Long
Public InActive As Boolean
Public InEnd As Boolean
Public InReady As Boolean
Public NameFile As String
Public IDPlayer As Long
...не важно
Описал масив в модуле
Код: plaintext
1.
Public PBClsPlayers( 9 ) As New ClsPlayer

И вот плохие новости
Код: plaintext
1.
2.
3.
4.
Public Sub Proba()
 For Each Pl In PBClsPlayers
   MsgBox Pl.Volume
 Next
End Sub
...
Рейтинг: 0 / 0
For Each
    #37507149
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вопше нужен способ динамического создания, удаления и перебор переменной описаного класа. Не умею делать
...
Рейтинг: 0 / 0
For Each
    #37507154
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо создавать не массив, а коллекцию
...
Рейтинг: 0 / 0
For Each
    #37507163
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Колекцию могу создать. Не знаю как привязку зделать и перебор. Add/Del/Count - знаю
...
Рейтинг: 0 / 0
For Each
    #37507168
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Перебор как раз For Each
ну или можно For Next до Count-а
...
Рейтинг: 0 / 0
For Each
    #37507182
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
Dim m As New Collection
m.Add ClsPlayer

дальше дает ошибку. что-то не то
?m.Item(1).Volume
...
Рейтинг: 0 / 0
For Each
    #37507187
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
For Each с масивом класа не хочет работать
остается только For Next
...
Рейтинг: 0 / 0
For Each
    #37507194
Андрей159
Код: plaintext
m.Add ClsPlayer
Нужно добавлять экземпляр класса. Создать его можно с помощью New, например, т. е. m.Add New ClsPlayer. А так - бессмыслица.
...
Рейтинг: 0 / 0
For Each
    #37507202
Впрочем, можно дать плохой совет: создать функцию или Property Get с именем класса, возвращающую вновь созданный экземпляр класса:
Код: plaintext
1.
2.
Function ClsPlayer() As ClsPlayer
 Set ClsPlayer= New ClsPlayer
End Function
Тогда можно пользоваться конструкцией
Код: plaintext
m.Add ClsPlayer
...
Рейтинг: 0 / 0
For Each
    #37507430
Фотография Андрей159
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хороший совет. Спасибо .
Впрочем различия между быстрой привязкой и позной нету
и так
Код: plaintext
 Public PBPlayers As New ClsPlayer
и так
Код: plaintext
1.
 Public PBPlayers As ClsPlayer
 Set PBPlayers = New ClsPlayer
работает
эксперементировал
Код: plaintext
1.
2.
  Dim m As New Collection
  m.Add PBPlayers
 ?m( 1 ).Volume

и вопрос уже не совсем по этой теме.
Нужно срабатывания процедуры или функции внутри класа по установленому таймеру (без поддержки формы и творческой фигни Do While Loop DoEvents.Такое реально ?
...
Рейтинг: 0 / 0
For Each
    #37507441
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть API
Код: plaintext
1.
2.
3.
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, _
  ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
найдешь, надеюсь, как с этим работать
...
Рейтинг: 0 / 0
For Each
    #37508169
Андрей159Впрочем различия между быстрой привязкой и позной нету
и так
Код: plaintext
 Public PBPlayers As New ClsPlayer
и так
Код: plaintext
1.
 Public PBPlayers As ClsPlayer
 Set PBPlayers = New ClsPlayer
работает
эксперементировал
Код: plaintext
1.
2.
  Dim m As New Collection
  m.Add PBPlayers
 ?m( 1 ).Volume
Если под быстрой и поздней привязкой подразумевается early binding и late binding, то ты неправильно их понимаешь, здесь в обоих случаях early binding. Подробно эти понятия разъяснены здесь .

Андрей159и вопрос уже не совсем по этой теме.
Нужно срабатывания процедуры или функции внутри класа по установленому таймеру (без поддержки формы и творческой фигни Do While Loop DoEvents.Такое реально ? Реально. Но сообщение таймера (WM_TIMER) всё равно попадает в очередь сообщений окна, т. е. окно должно быть (хотя бы одно, можно невидимое). Кто-то использует SetTimer/KillTimer, а можно обойтись и по-простому, без явного вызова функция WinAPI, создавая в экземпляре класса экземпляр невидимой формы с таймером.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / For Each
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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