[CDR X4 и ранее] Object required

Статус
Закрыто для дальнейших ответов.

collerok

Участник
Топикстартер
Сообщения
522
Реакции
13
На последней строке выделяет
и пишет "Object required".
Разве flag это не Object?
Тогда почему не компилится?

Код:
Dim flag As Boolean
Set color = shape.Fill.UniformColor
Set flag = color.IsCMYK


Не по теме:
не в тот форум запостил
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Разве flag это не Object?
Вы какие то странные вопросы задаете, как будто первый раз столкнулись с бейсиком
У вас флаг объявлен как Boolean
Соответственно это никакой не объект и в данном конкретном случае Set совсем не нужен, как в прошлый раз
 

collerok

Участник
Топикстартер
Сообщения
522
Реакции
13
как будто первый раз столкнулись с бейсиком
ну, почти первый раз... многое не понятно и не привычно, с сетом не разобрался до конца...

Я считал что Boolean это тоже класс, и полагал что Object это супертайп для него, а сейчас смотрю, что действительно нет такого класса... т.е. в vb булеан это примитивный тип.

Если Shape - это объект в контексте корела, поэтому нужно использовать сет. Правильно я понял, что только для классов нужно использовать сет?

И еще вот это не понятно: Dim color As New color - почему тут New используется, а для Shape не нужно? Они оба классы...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Правильно я понял, что только для классов нужно использовать сет?
Да, вам же интерпретатор об этом вполне ясно сказал
Dim color As New color - почему тут New используется, а для Shape не нужно? Они оба классы...
Называть переменные именами классов, кстати, тоже строжайше запрещено
 

collerok

Участник
Топикстартер
Сообщения
522
Реакции
13
интерпретатор, я бы сказал скуп на сообщения, чтобы понимать их сразу правильно

Называть переменные именами классов, кстати, тоже строжайше запрещено
это только для примера, там меня больше интересовал применение New при декларации переменной.
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Вы матчасть по объектному программированию почитайте сперва
New - создает новый экземпляр объекта
А Dim применительно к объекту просто объявляет переменную, которой данный объект может быть присвоен
Как то примерно так
 

collerok

Участник
Топикстартер
Сообщения
522
Реакции
13
объектное программирование знакомо, но в corel vba свои приколы - с Dim теперь понятнее

New - создает новый экземпляр объекта

тогда зачем в следующем коде создавать новый объект Color, если "The UniformColor property returns a Color object which represents the uniform fill of a shape."

Код:
Dim shapeColor As New color
Set shapeColor = s.Fill.UniformColor

т.е. мы возвращаем объект Color c помощью UniformColor и все-равно при объявлении нужно создавать объект командой New... - как-то нелогично... если объект колор уже был в памяти, то почему бы на него просто не сделать ссылку - но corel vb не дает так сделать...
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835

collerok

Участник
Топикстартер
Сообщения
522
Реакции
13
все, я понял в чем была ошибка - нужно было правильно обзывать переменные...
 
Статус
Закрыто для дальнейших ответов.