Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Метод Scale... что-то я не вкуриваю... размеры объекта Picture Box.... 
:(
    Опции темы
tranzit1973
Дата 7.6.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Братцы!
Picture1.Scale(x1,y1)-(x2,y2)
Какой диапазон должен быть у аргументов x1,x2,y1,y2 ?
При изменении размера объекта Picture Box на форме эта строка вызывает ошибку в программе.
Т.е. если размер объекта небольшой - то ошибка, если увеличить, то ошибки нет.
Аргумент y1 у меня может быть очень большим.

PM MAIL   Вверх
Akina
Дата 7.6.2005, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(tranzit1973 @ 7.6.2005, 16:17)
Какой диапазон должен быть у аргументов x1,x2,y1,y2

Это координаты углов объекта. Единица определяется ScaleMode, диапазон - свойствами объекта...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tranzit1973
Дата 7.6.2005, 16:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Спасибо, конечно, но почему кусок кода

maxfx = 6000000000#
Picture1.ScaleMode = 0
Picture1.Scale (0, maxfx)-(100, 0)

при небольших размерах Picture Box выдает ошибку?

PM MAIL   Вверх
Akina
Дата 7.6.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(tranzit1973 @ 7.6.2005, 17:50)
Picture1.ScaleMode = 0

А это - зачем? или тыы где-то ScaleHeight, ScaleWidth, ScaleLeft или ScaleTop задаешь?
а небольших - каких?

собсно дай код задания параметров PictureBox, при которых этот код дает ошибку...


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Voldemar2004
Дата 7.6.2005, 17:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Код

Option Explicit
Private Sub Command1_Click()
Dim MaxFx As Long
MaxFx = 6000000000
Picture1.ScaleMode = 0
Picture1.Scale (0, MaxFx)-(100, 0)
End Sub


Ошибка - Overflow - переполнение, tranzit1973 удали нолик в конце

Код

MaxFx = 600000000


и все будет работать. И пользуйся

Код

Option Explicit


она запрещает неявное объявление переменных и объявляй переменные как Dim your_peremennaya as Type

а не das$ или das#. smile
Добавлено @ 17:12
ОйAkina, как всегда опередил нас. Если ответ не по теме, то не ругайте. smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
tranzit1973
Дата 7.6.2005, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Так дело в том, что если Picture Box прилично растянуть по высоте (на этапе проектирования), то все работает без ошибки.

Влияет ли физический размер Picture Box на максимально возможные значения аргумента Scale?

P.S. Все переменные у меня определены.


PM MAIL   Вверх
Akina
Дата 7.6.2005, 17:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



tranzit1973
ну дай значения пропертей, при которых ошибка-то вылетает... у меня что-то не получается воспроизвесть...
Добавлено @ 17:51
Voldemar2004
при чем тут нолик в конце - аргументы там SINGLE, переполнения не вызовут.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tranzit1973
Дата 7.6.2005, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



tranzit1973
ну дай значения пропертей, при которых ошибка-то вылетает... у меня что-то не получается воспроизвесть...
[b]
----------------------------------------------------------------------------
Да проперти обычные, ничего там я не редактировал.

Попробуй создать форму с одной кнопкой и Picture Box-ом (ScaleMode = 0)
Размер Picture Box сделай (ну, примерно 3х3 см)

Введи код:

Option Explicit
Dim maxfx As Single

Private Sub Command1_Click()
maxfx = 6000000000
Picture1.Scale (0, maxfx)-(100, 0)
End Sub

В итоге: Run Time Error 5.....

А теперь попробуй растяни мышкой Picture Box вниз сантиметров на 15, и запусти прогу.
Вуаля! Все работает.

Мля... цитата не получилась.... Пардон.
Значит, я тупой smile

Это сообщение отредактировал(а) tranzit1973 - 7.6.2005, 18:30
PM MAIL   Вверх
cardinal
Дата 7.6.2005, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: 19
Всего: 99



Цитата(tranzit1973 @ 7.6.2005, 16:28)
Мля... цитата не получилась

Модератор: Выделяешь текст в сообщение участника, который хочешь процитировать и нажимаешь на "быстрая цитата" и все будет чикипоки...


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
tranzit1973
Дата 8.6.2005, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Цитата(cardinal @ 7.6.2005, 22:21)
Модератор: Выделяешь текст в сообщение участника, который хочешь процитировать и нажимаешь на "быстрая цитата" и все будет чикипоки...


Спасибо, cardinal.

Ну что, народ, никто не пробовал? smile
PM MAIL   Вверх
Voldemar2004
Дата 8.6.2005, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата

Ну что, народ, никто не пробовал?


Попробовал. 3х3 см. smile

Вот в чем ошибка по Моему Скромному Мнению (ИМХО):

Код

Option Explicit
Private Sub Command1_Click()
Dim maxfx As Single
maxfx = 600000000

Picture1.Scale (0, maxfx)-(100, 0)
End Sub


Вот такой код работает без проблем. Дело в том, что из-за слишком здорового числа, которое дополняется символом #, а он означает по-моему ИМХО, выход за пределы диапазона и есть суть ошибки.
Ведь VB не добавит знака # при количестве цифр = 9 в числе 600000000. А если регистр увеличить на единичку - опля см. результат. Причем не пишется, что выход за пределы динамического диапазона.

Код

Option Explicit
Private Sub Command1_Click()
Dim maxfx As Long
maxfx = 10000000010#
Picture1.Scale (0, maxfx)-(100, 0)
End Sub


А вот в этом случае уже OverFlow. smile Потому что

Код

Dim maxfx As Long


Код

Option Explicit
Private Sub Command1_Click()
Dim maxfx As Single
maxfx = 6000000000#
Picture1.Scale (maxfx, 0)-(100, 0)
End Sub


А вот в этом случае уже деление на 0. smile

Код

Option Explicit
Private Sub Command1_Click()
Dim maxfx As Double
maxfx = 600000000
Picture1.Scale (0, maxfx)-(100, 0)
End Sub


И все опять прекрасно работает.

Цитата

А теперь попробуй растяни мышкой Picture Box вниз сантиметров на 15, и запусти прогу.
Вуаля! Все работает.


Даже без таких вот ухищрений. Насчет растягивания в твоем случае вниз на 15 см. - ну глюки бывают и в VB, хотя мне кажется все дело в том, что ты, tranzit1973, слишко задрал число - удали нолик в конце, как у меня и все!

З.Ы. И зачем тебе такое здоровое число??

Это сообщение отредактировал(а) Voldemar2004 - 8.6.2005, 18:41


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
tranzit1973
Дата 9.6.2005, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Цитата(Voldemar2004 @ 8.6.2005, 18:40)
Даже без таких вот ухищрений. Насчет растягивания в твоем случае вниз на 15 см. - ну глюки бывают и в VB, хотя мне кажется все дело в том, что ты, tranzit1973, слишко задрал число - удали нолик в конце, как у меня и все!

З.Ы. И зачем тебе такое здоровое число??


Спасибо, друг, за ответы.

Число maxfx у меня может быть любым в пределах Single, а сингл-то могет быть поболе миллиарда. А тут затыкается на миллионах!
Дело принципа...


PM MAIL   Вверх
Voldemar2004
Дата 9.6.2005, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

Репутация: 7
Всего: 23



Цитата(tranzit1973 @ 9.6.2005, 09:52)
Число maxfx у меня может быть любым в пределах Single, а сингл-то могет быть поболе миллиарда. А тут затыкается на миллионах!
Дело принципа...


Неа. Пределом Single является 3.402823E38 для положительных чисел.

Бейсик-то правильно все реализует, только для объекта Picture такое число недопустимо видать в твоем случае...



--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
tranzit1973
Дата 9.6.2005, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 7.6.2005

Репутация: нет
Всего: нет



Цитата(Voldemar2004 @ 9.6.2005, 17:09)
Пределом Single является 3.402823E38 для положительных чисел.


Ну дык я и говорю: "Поболе миллиарда". Насколько я помню со школы smile Е - это 10 в степени nn.
В данном случае: 3.402823*10^38.

Ну да ладно, забил я на это дело, пришлось, конечно лишнюю ON ERROR сделать, но времени копаться нету.

Спасибо, братцы, за внимание к новичку.
Всё! Тема закрыта!

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1489 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.