purebasic.info

PureBasic forum
Текущее время: Сб окт 20, 2018 10:33 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 10 ] 
Автор Сообщение
 Заголовок сообщения: Странная ошибка - глюк PB?
СообщениеДобавлено: Вс авг 13, 2017 10:12 am 
Не в сети
доцент
Аватар пользователя

Зарегистрирован: Сб авг 05, 2017 8:34 pm
Сообщений: 41
Откуда: Россия, Брянск
Благодарил (а): 7 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Здравствуйте!
Обнаружил странную ошибку...
Код 1:
Код:
1
2
3
4
5
a=3
b=Int(A/0)
Debug b
Debug Int(a/0)
Debug Int(3/0)



Код 2:

Код:
1
2
3
4
5
a=3
b=Int(A/0)
Debug b
Debug Int(a/0)
;Debug Int(3/0)



Деление на нуль осталось, а
Код:
1
b=Int(A/0)

и
Код:
1
Debug Int(a/0)

сообщение об ошибке куда-то исчезло...
Почему так?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Вс авг 13, 2017 12:22 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11300
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Это не ошибка. Функция Int преобразует выражение в формат float, в котором результат деления на ноль будет "бесконечность".
Код:
1
2
3
4
5
6
DisableDebugger
a.f = 2/a
MessageRequester("", StrF(a))
a=0
a.f = 0/a
MessageRequester("", StrF(a))


http://goo.gl/BbVPZ8
Цитата:
получение в результате положительной или отрицательной бесконечности — +INF или −INF (при делении вида a⁄0, где a ≠ 0 — число с плавающей запятой, согласно стандарту IEEE 754)

привести к специальному нечисловому значению — NaN (в сходной ситуации, но при a = 0).

_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 7:25 pm 
Не в сети
студент

Зарегистрирован: Сб дек 09, 2017 4:53 am
Сообщений: 9
Благодарил (а): 5 раз.
Поблагодарили: 0 раз.
Пункты репутации: 0
Подскажите почему такой код работает в старых версиях PB, а в новых нет:

Код:
1
Debug GetProcAddress_(GetModuleHandle_("ntdll"), "abs")



и как это исправить.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 7:36 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 271
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
2kpb писал(а):
как это исправить.
Для начала можно поставить точку между "nt и dll"
И DLL должна быть загружена перед вызовом "GetModuleHandle".
Например так:
Код:
1
2
3
LoadL.l = LoadLibrary_("nt.dll")
Debug GetProcAddress_(GetModuleHandle_("nt.dll"), "abs")
FreeLibrary_(LoadL)



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 8:04 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб июл 18, 2009 8:25 am
Сообщений: 813
Благодарил (а): 21 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
repeat писал(а):
2kpb писал(а):
как это исправить.
Для начала можно поставить точку между "nt и dll"
И DLL должна быть загружена перед вызовом "GetModuleHandle".

Улыбнуло целых 2 раза :)

Код:
1
2
3
4
5
6
7
Procedure.s ToAscii(in$)
  Protected out$ = Space(Len(in$)+1)
    PokeS(@out$, in$, -1, #PB_Ascii)
  ProcedureReturn out$
EndProcedure
 
Debug GetProcAddress_(GetModuleHandle_("ntdll"), ToAscii ("abs"))



Хз как это по человечий запилить с новым дурацким юникодом, но смысл такой. Я сам еще на 5.30 сижу.


Последний раз редактировалось Volkoff Ср дек 20, 2017 8:52 pm, всего редактировалось 1 раз.

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 8:44 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 271
Благодарил (а): 14 раз.
Поблагодарили: 32 раз.
Пункты репутации: 0
Volkoff писал(а):
Улыбнуло целых 2 раза :)
Деградирую, что уж тут...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 8:58 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб июл 18, 2009 8:25 am
Сообщений: 813
Благодарил (а): 21 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
repeat писал(а):
что уж тут...

Да я сам чаще туплю в самых простейших вещах, когда голова чем-то сложным занята, эт нормально :)
Я даже ради интереса погуглил чуток и что-то не нашел вменяемых вариантов, неужели новые пурики теперь на костылях только работают, втф? Всегда любил язык за простоту работы втч с апишками, а тут фигня какая-то теперь, что псевдотипы, что конвертация, а из коробки получается нифига не пашет. Могли бы уж сделать глобальный какой псевдотип для ansi...


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 9:13 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11300
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Код:
1
2
3
4
If OpenLibrary(0, "dll.dll")
  Debug GetFunction(0, "Function")
  CloseLibrary(0)
EndIf


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 9:28 pm 
Не в сети
профессор
Аватар пользователя

Зарегистрирован: Сб июл 18, 2009 8:25 am
Сообщений: 813
Благодарил (а): 21 раз.
Поблагодарили: 4 раз.
Пункты репутации: 0
Это конечно да, но ведь по сути тоже костыль своего рода.
Вызывать LoadLibrary для загруженной длл (что в данном случае аналогично GetModuleHandle), потом GetModuleHandleW и потом еще и FreeLibrary
Как по мне, стало меньше гибкости... печаль.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Странная ошибка - глюк PB?
СообщениеДобавлено: Ср дек 20, 2017 9:46 pm 
Не в сети
МОДЕРАТОР
Аватар пользователя

Зарегистрирован: Пн апр 09, 2007 4:53 pm
Сообщений: 11300
Благодарил (а): 4 раз.
Поблагодарили: 436 раз.
Код:
1
2
3
4
5
Import "Kernel32.lib"
  GetProcAddress(hModule, ProcName.p-ascii)
EndImport
 
Debug GetProcAddress(GetModuleHandle_("User32.dll"), "MessageBoxA")


_________________
Компьютер позволяет решать все те проблемы, которые до его изобретения не существовали. :) :)


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 10 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB