Страница: 1 |
Страница: 1 |
Вопрос: Compile error:
Добавлено: 01.09.09 09:04
Автор вопроса: fifa36
Всем привет! помогите разобраться! Выдает ошибку:
Объявил собственный тип, обращаюсь к процедуре и передаю ей переменную собственного типа, а он мне ошибку при обращении к процедуре:
Compile error:
Only-user defined types defined in public object modules can be coerced to or from a variant or passed to late-bound functions
Public Type CandleType
dateArray() As Date
openArray() As Double
maxArray() As Double
minArray() As Double
closeArray() As Double
volumeArray() As Double
End Type
Public Type SecurityType
PlaceCode As String
PCode As String
Candle As CandleType
nCandle As Long
LastCandleDate As Date
End Type
Public Sub timer()
Dim Securites() As SecurityType
...
For i = 1 To nSec
recieveData Securites(i - 1).Candle
Next i
end sub
Public Sub recieveData(ByRef Candle As Variant)
...
end sub
Кстати кто подскажет)): процедура от функции чем отличается? тем что одна возвращает значение а другая нет и се?
Ответы
Всего ответов: 15
Номер ответа: 1
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #1
Добавлено: 01.09.09 09:07
кстати пробовал писать
Public Sub recieveData(ByRef Candle As CandleType)
не решает прблемы
Номер ответа: 2
Автор ответа:
inferno
Вопросов: 8
Ответов: 39
Web-сайт:
Профиль | | #2
Добавлено: 01.09.09 09:47
Попробуй так
Номер ответа: 3
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #3
Добавлено: 01.09.09 10:07
Дело в том что надо передать не my_rec f my_rec.Candle
а Candle имеет тип не SecurityType а CandleType
Номер ответа: 4
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #4
Добавлено: 01.09.09 10:08
Сорри!
надо передать
не
my_rec
а
my_rec.Candle
Номер ответа: 5
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #5
Добавлено: 01.09.09 10:14
Можно наверно все это дело глобально объявить и не передавать в процедуру но все жы...
Номер ответа: 6
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #6
Добавлено: 01.09.09 14:40
нужно создать модуль и вынести туда твои типы CandleType и SecurityType
Номер ответа: 7
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #7
Добавлено: 01.09.09 17:40
так тоже делал, не помогало,
Номер ответа: 8
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #8
Добавлено: 01.09.09 19:27
я только что так сделал и все работает
Номер ответа: 9
Автор ответа:
inferno
Вопросов: 8
Ответов: 39
Web-сайт:
Профиль | | #9
Добавлено: 02.09.09 08:35
Выложи код!!!
Номер ответа: 10
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #10
Добавлено: 02.09.09 13:01
на всякий случай еще раз проверил вынес в отдельный модуль объявление типов взяв именно тот код что привел в теме, та же ошибка
Номер ответа: 11
Автор ответа:
inferno
Вопросов: 8
Ответов: 39
Web-сайт:
Профиль | | #11
Добавлено: 02.09.09 13:03
Skywalker выложи свой рабочий код!
Номер ответа: 12
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #12
Добавлено: 02.09.09 14:09
inferno код приведенный в вопросе полностью воспроизводит ошибку по крайней мере у меня зачем вам остальной код??
Номер ответа: 13
Автор ответа:
Skywalker
ICQ: 300-70-6пятьЪ
Вопросов: 62
Ответов: 545
Web-сайт:
Профиль | | #13
Добавлено: 02.09.09 17:26
код Module1:
код Лист1:
Номер ответа: 14
Автор ответа:
GDK
Вопросов: 13
Ответов: 348
Профиль | | #14
Добавлено: 02.09.09 17:45
По моему вместо типов лучше сделать классы и пользоваться. Гимора намного меньше будет.
А в примере надо бы перевести с английского описание ошибки. Думаю намного быстрее удастся разобраться. Там или польз. тип определён в не том модуле, то ли в процедуру нельзя передавть пользовательский тип .... Чёрт голову сломит с этими типами. По моему их реально целесообразно применять только для работы с Win API.
Номер ответа: 15
Автор ответа:
fifa36
Вопросов: 33
Ответов: 116
Профиль | | #15
Добавлено: 03.09.09 10:08
Skywalker спасибо! получается проблема была в том что надо было сделать ReDim хотя бы для одного элемента Candle. В вашем примере:
ReDim Securites(0).Candle.openArray(0)
GDK спасибо! попробую классы