Перейти к содержимому

Фотография

как передать в функцию элемент массива пользовательского типа


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 4

#1 AlejandroPopov

AlejandroPopov

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Попов Александр

Отправлено 05 марта 2009 - 07:27

Есть пользовательский тип:
Type Obj
	First As Integer
	Second As String
End Type

Есть массив объектов пользовательского типа:
Dim Ex(1) As Obj

	Ex(0).First = 345
	Ex(0).Second = "строка1"
	Ex(1).First = 456
	Ex(1).Second = "строка2"

Есть 2 процедуры:
Sub Proc1 (Ex As Obj)
	'что-то делаем с объектом
End Sub

Sub Proc2 (Ex() As Obj)
	Dim i As Integer
	For i = LBound(Ex()) To UBound(Ex())
		'пробегаем по каждому объекту из массива
		'и в зависимости от логики нужно вызвать Proc1
		'для i-го элемента
		Call Proc1 (Ex(i))
	Next i
End Sub
Предыдущий вызов Proc1 из Proc2 работать не будет. Как вызвать непонятно.
  • 0

#2 berzinc

berzinc

    Активный участник

  • Members
  • PipPip
  • 110 сообщений
  • ФИО:Berzins Lauris
  • Город:Riga, Latvia

Отправлено 05 марта 2009 - 09:09

Sub Proc2 (Ex() As Obj)
	Dim i As Integer
	For i = LBound(Ex()) To UBound(Ex())
		'пробегаем по каждому объекту из массива
		'и в зависимости от логики нужно вызвать Proc1
		'для i-го элемента
		Proc1 (Ex(i))
	Next i
End Sub
Предыдущий вызов Proc1 из Proc2 работать не будет. Как вызвать непонятно.


call Proc1 (Ex(i))
  • 0

#3 AlejandroPopov

AlejandroPopov

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Попов Александр

Отправлено 05 марта 2009 - 09:34

да, описался, но
Call Proc1 (Ex(i))
не работает.
  • 0

#4 berzinc

berzinc

    Активный участник

  • Members
  • PipPip
  • 110 сообщений
  • ФИО:Berzins Lauris
  • Город:Riga, Latvia

Отправлено 05 марта 2009 - 09:53

да, описался, но
Call Proc1 (Ex(i))
не работает.


Rational Robot 7.0.0.0
работает...


Type Obj
	First As Integer
	Second As String
End Type

Sub Proc1 (Ex As Obj)
	SQALogMessage sqaPass," Second "+Ex.Second ,""
End Sub

Sub Proc2 (Ex() As Obj)
	Dim i As Integer
	For i = LBound(Ex()) To UBound(Ex())
		call Proc1 (Ex(i))
	Next i
End Sub

Sub Main
	Dim Ex(1) As Obj

	Ex(0).First = 345
	Ex(0).Second = "aaa"
	Ex(1).First = 456
	Ex(1).Second = "bbb"

	call Proc2 (Ex)

end sub

  • 0

#5 AlejandroPopov

AlejandroPopov

    Новый участник

  • Members
  • Pip
  • 18 сообщений
  • ФИО:Попов Александр

Отправлено 05 марта 2009 - 10:22

а ведь и правда работает!
часа 3 назад и всю эту неделю не работало. видно где-то я ошибся.
спасибо, что заставили еще раз проверить.
  • 0


Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 анонимных