Страницы: 1
RSS
Overflow
 
Есть переменная типа Variant, ей присваится значение. В некоторых случаях при присвоение, это значение вылазеет за пределы допустимых (пример степени - 1975 ^ 98). Вопрос  - как  предсказать, обойти, не дать попытки присвоиться не вызывая Run-time Error? (Не используя On Error...)
 
{quote}{login=The_Prist}{date=22.03.2011 11:48}{thema=}{post}Dim q  
On Error Resume Next  
q = 1975 ^ 98  
If Err Then  
Err.Clear: MsgBox "Вышли за пределы возможного"  
End If{/post}{/quote}  
 
Я же написал...  
(Не используя On Error...)
 
А простая проверка If q > N then ... не спасает?
 
{quote}{login=Юрий М}{date=22.03.2011 11:58}{thema=}{post}А простая проверка If q > N then ... не спасает?{/post}{/quote}  
 
нет, это лишь один ИЗ примеров, если возмем 1975 ^ 40 то Overflow не будет  
 
мне нужно решение этой проблемы в абсолюте
 
А предел допустимого , это сколько?
 
{quote}{login=MrViper}{date=22.03.2011 11:50}  
(Не используя On Error...){/post}{/quote}  
 
морально-этические принципы?
 
{quote}{login=The_Prist}{date=22.03.2011 12:06}{thema=Re: Re: }{post}{quote}{login=MrViper}{date=22.03.2011 11:50}{thema=Re: }{post}Я же написал...  
(Не используя On Error...){/post}{/quote}И почему же это? Тогда смотрите на ошибку, что ж делать-то...Для чего тогда придумали оператор On Error?{/post}{/quote}  
 
На мой взляд использую On Error Resume Next (именно Resume next), также как GoTo не правильная концепция построение программного кода, тем более On Error...  может глючить при использование циклов и последовательное возникновение несколько ошибок подряд (не один раз так было). И почему функция IsError() ограниченная?  
 
""А предел допустимого , это сколько?"" это ограничения для конкретного типа
 
> не правильная концепция построение программного кода  
 
вам что надо? концепции соблюсти, или создать правильно работающий макрос, не выдающий ошибок?  
 
 
> тем более On Error... может глючить при использование циклов...  
 
неужели... который год макросы пишу, постоянно использую On Error Resume Next,  
и что-то глюков не заметил.  
Может, это вы неправильно используете этот оператор?  
При грамотной расстановке проверок ошибки, и очистки при помощи Err.Clear, - всё  работает отлично и без каких-либо глюков.  
 
 
PS: Вот я, к примеру, когда гвозди молотком забиваю, иногда по пальцам попадаю.  
По-вашему, это означает, что молоток работает с глюками, или что концепция забивания гвоздей молотком в корне неверна?
 
{quote}{login=EducatedFool}{date=22.03.2011 01:03}{thema=}{post}> Вот я, к примеру, когда гвозди молотком забиваю, иногда по пальцам попадаю.  
По-вашему, это означает, что молоток работает с глюками, или что концепция забивания гвоздей молотком в корне неверна?{/post}{/quote}  
 
1 пить надо меньше :)  
 
2 шурупы надежнее  
 
3 молотком работать - тоже нужна сноровка, как и с on error  
 
я ,кстати, наверное, как мне кажется, чаще использую on error goto
Живи и дай жить..
 
{quote}{login=EducatedFool}{date=22.03.2011 01:03}{thema=}{post}> не правильная концепция построение программного кода  
 
вам что надо? концепции соблюсти, или создать правильно работающий макрос, не выдающий ошибок?  
 
 
> тем более On Error... может глючить при использование циклов...  
 
неужели... который год макросы пишу, постоянно использую On Error Resume Next,  
и что-то глюков не заметил.  
Может, это вы неправильно используете этот оператор?  
При грамотной расстановке проверок ошибки, и очистки при помощи Err.Clear, - всё  работает отлично и без каких-либо глюков.  
 
 
PS: Вот я, к примеру, когда гвозди молотком забиваю, иногда по пальцам попадаю.  
По-вашему, это означает, что молоток работает с глюками, или что концепция забивания гвоздей молотком в корне неверна?{/post}{/quote}  
 
Я когда создавал тему, хотел узнать можно ли обойти ошибку НЕ пребегая к On Error.., а не разбираться по поводу "кому какие фломастеры вкуснее". Если нет такого способа, так надо было просто и дословно ответить что НЕЛЬЗЯ и точка.  
   А насчет концепции - в чужой монастырь...думаю понятно
 
можно, конечно можно..  
 
только вы повторите все действия, которые и так выполняются при вызове onerror - пользуетесь вы ей или нет, а проверка-то все равно проводится.. так, заете ли, на всяки случай..
Живи и дай жить..
 
{quote}{login=слэн}{date=22.03.2011 02:13}{thema=}{post}можно, конечно можно..  
 
только вы повторите все действия, которые и так выполняются при вызове onerror - пользуетесь вы ей или нет, а проверка-то все равно проводится.. так, заете ли, на всяки случай..{/post}{/quote}  
 
Если не затруднит, напишите пример
 
затруднит - я-то как раз выступаю против ненужных действий
Живи и дай жить..
 
{quote}{login=слэн}{date=22.03.2011 03:26}{thema=}{post}затруднит - я-то как раз выступаю против ненужных действий{/post}{/quote}  
 
У меня уже слов нету...вот скажите зачем писать вот это:  
 
>>можно, конечно можно..  
>>только вы повторите все действия, которые и так выполняются при вызове onerror >>- пользуетесь вы ей или нет, а проверка-то все равно проводится.. так, заете и, >>на всяки случай..  
 
я же обрающь не к помощи гребанным философам!!!  
 
Тема закрыта.
 
но это же правда - если кто-то написал, всегда можно повторить.  
 
зря вы так нервничаете. сначала философы гребаные, потом вообще интеллигенты..
Живи и дай жить..
 
во.. вы мне слово - я вам два :) так вышло
Живи и дай жить..
 
Если речь идет о выражении вида x^y, можно проверить так:  
 
y * Log(x) <= Log(1.7976931348623E+308) 'макс. положительное число  
 
Для x * y соответственно  
 
Log(x) + Log(y) <= Log(1.7976931348623E+308)  
 
и т.д.
Страницы: 1
Читают тему
Наверх
Loading...