VBScipt: вызов встроенных функций, скрытых глобальными переменными - PullRequest
0 голосов
/ 29 октября 2009

VBScript на ASP Classic содержит функцию «int». (Он округляет числа в направлении -∞.) Предположим, что какой-то чрезмерно «умный» кодер создал глобальную переменную с именем «int». Есть ли способ получить оригинальную функцию? Я перепробовал все возможные способы обхода с хитроумными и хитрыми руководителями, но без игры в кости. Я подозреваю, что это невозможно, но я надеюсь, что кто-то узнает об этом больше, чем я.

РЕДАКТИРОВАТЬ: Спасибо за ответы. Поскольку вы все спросили, глобальная переменная, называемая «Int» (хотя, к сожалению, vbscript не учитывает регистр), является фабрикой для класса, похожего на Integer в Java. Свойство по умолчанию по сути является конструктором с одним аргументом; то есть «Int (42)» возвращает новый объект IntClass, содержащий 42. Свойство IntClass по умолчанию, в свою очередь, просто возвращает необработанное число.

Создатель пытался обойти проблему отсутствия надлежащих пространств имен и статических методов, и решение на самом деле довольно простое. Передайте IntClass, где ожидается int, и он автоматически вызовет свойство по умолчанию. Я пытаюсь исправить последний оставшийся шов: этот внешний код, вызывающий «int», не будет округляться должным образом (потому что конструктор использует CLng).

Ответы [ 3 ]

3 голосов
/ 29 октября 2009

Не то чтобы я знал, getref работает только с пользовательскими функциями, а не со встроенными модулями. Я бы предложил переименовать функцию custom'int 'и обновить все ссылки на эти пользовательские. Для этого вы можете использовать функцию поиска visual studio (express) или любой другой понравившийся вам инструмент. Не должно быть много работы.

0 голосов
/ 29 октября 2009

Я не думал, что зарезервированные слова будут разрешены для имен функций или переменных.

Дункансон прав. Сделай боль и переименуй инт. Скорее всего, что-то происходит хуже, чем это.

(зачем кому-то создавать глобальную переменную с именем int ... это займет некоторое время)

0 голосов
/ 29 октября 2009

Или вы можете использовать CInt вместо Int

response.write trim(cint(3.14)) + "<br>"

Неправильный !! Смотрите NobodyMan комментарии

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...