ByRef argument опять!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

ByRef argument опять!

Сообщение SeRRg » 18.03.2004 (Чт) 16:11

В связи с разработкой родился вот еще какой вопрос:
Почему может возникать ошибка ByRef argument type mismatch???
Текст функции вот какой:


Private Function perekryvanie(ByVal Left1 As Long, ByVal left2 As Long, ByVal top1 As Long, ByVal top2 As Long, ByVal width1 As Long, ByVal width2 As Long, ByVal height1 As Long, ByVal height2 As Long) As Boolean

Dim rect1 As RECT, rect2 As RECT, rectresult As RECT

rect1.Left = Left1
rect1.Top = top1
rect1.Right = Left1 + width1
rect1.Bottom = top1 + height1

rect2.Left = left2
rect2.Top = top2
rect2.Right = left2 + width2
rect2.Bottom = top2 + height2

Call Win32.IntersectRect(rectresult, rect1, rect2)

End function



Поиск ничего не дал. Может, объясните мне :?: :?:
VB - это звучит!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 18.03.2004 (Чт) 16:19

Внимание, вопрос...
ГДЕ эта ошибка?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 18.03.2004 (Чт) 16:39

Call Win32.IntersectRect(rectresult, rect1, rect2).
Он выделяет вот эту бяку и выдает сообщение об ошибке. В отдельной программе эта ф-ия работает, а в моей-нет
[/b]
VB - это звучит!

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 18.03.2004 (Чт) 16:40

Ах, да... Еще подключена Win32.tlb, если это что-нибудь меняет.
VB - это звучит!

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 18.03.2004 (Чт) 19:54

Я нашел причину: эта проблема пропадает, если в Project-References
отключить DirectX 7 For Visual Basic Type Library, что ессно я сделать не могу :)
НО если в этой функции заменить dim rect1 as RECT на dim rect1 as Win32.Rect, и т.п.,
а в остальных случаях на rc.dxvblib.rect, то все идет. М.Б. это кому-нить поможет!
VB - это звучит!

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 18.03.2004 (Чт) 19:55

И еще: дайте, пожалуйста, теоретическое обоснование этому.
VB - это звучит!

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.03.2004 (Чт) 21:49

У меня была такая проблемка... Как решилась, не помню - давно было... Очевидно, что всё дело в пересечении трёх (двух) типов с одним именем rect:
RECT, Win32.Rect, rc.dxvblib.rect...

A.A.Z.
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3035
Зарегистрирован: 30.06.2003 (Пн) 13:38

Сообщение A.A.Z. » 18.03.2004 (Чт) 22:46

Структура под одним и тем же именем в разных библиотеках (разного назначения) может быть разной по содержанию, я думаю, проблема была в этом. Если я правильно понял тему обсуждения. :roll:
Нет меня больше

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 18.03.2004 (Чт) 23:01

Да-да, я про то же :)

SeRRg
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 343
Зарегистрирован: 25.11.2003 (Вт) 20:14
Откуда: Тюмень!

Сообщение SeRRg » 19.03.2004 (Пт) 14:19

А я Все равно не понял:
Вот я в обжект браузере смотрю - у меня два типа RECT. Один
из Win32.tlb, другой из ДиректХ.
У первого мемберы -Top,Bottom,Left,Right, и у второго точно такие же.
В чем же разница??? Содержание одно и то же вроде бы.
VB - это звучит!

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.03.2004 (Пт) 14:25

Ни в чём разница...
Разные типы считаются разными, даже если они одинаковые.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Vi
Постоялец
Постоялец
 
Сообщения: 739
Зарегистрирован: 25.01.2002 (Пт) 11:03
Откуда: Россия, Ижевск

Сообщение Vi » 19.03.2004 (Пт) 16:39

Структуры, имеющие одинаковые внутренности, в разных библиотеках отличаются внутренним идентификатором (GUIDом, если быть точным). Поэтому не важно как называются структуры, главное, чтобы у них GUID были одинаковы.

Если для структуры не указано имя библиотеки, в которой содержится ее описание, то берется самое первая библиотека в списке библиотек, в которой это имя определено. И соответственно определяется GUID.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! (с) КВН


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 2

    TopList  
cron