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

  • Автор темы Автор темы collerok
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

collerok

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

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


Не по теме:
не в тот форум запостил
 
Разве flag это не Object?
Вы какие то странные вопросы задаете, как будто первый раз столкнулись с бейсиком
У вас флаг объявлен как Boolean
Соответственно это никакой не объект и в данном конкретном случае Set совсем не нужен, как в прошлый раз
 
как будто первый раз столкнулись с бейсиком
ну, почти первый раз... многое не понятно и не привычно, с сетом не разобрался до конца...

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

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

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

Называть переменные именами классов, кстати, тоже строжайше запрещено
это только для примера, там меня больше интересовал применение New при декларации переменной.
 
Вы матчасть по объектному программированию почитайте сперва
New - создает новый экземпляр объекта
А Dim применительно к объекту просто объявляет переменную, которой данный объект может быть присвоен
Как то примерно так
 
объектное программирование знакомо, но в 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 не дает так сделать...
 
все, я понял в чем была ошибка - нужно было правильно обзывать переменные...
 
Статус
Закрыто для дальнейших ответов.