Для отладки своих кодов и для вывода информации я привык пользоватся функцией "MessageBox". Может это и не совсем правильно, но как говорится привычка вторая натура. Сама функция "MessageBox" заточена для вывода строчной информации и числовые значения не выводит. Для вывода числового значения насколько я знаю (хотя могу и ошибатся) надо "MessageBox" использовать в связке с функцией "wsprintf". Конечно функция "wsprintf" предоставляет более широкие возможности для вывода информации, но для скромных потребностей таких как вывод простого числа (например адреса или просто значения) она мягко говоря раздражает. Поэтому для этого я написал функцию и поместил её в файл Box.inc и подключаю его при отладке к своему коду. Функция имеет три пораметра. 1 - флаг (0 или 1) 2 - заголовок (шапка) 3 - значение invoke MesBox,0,addr box,xxx - (первый параметр "0" для вывода числовой информации) invoke MesBox,1,addr box,addr xxx - (первый параметр "1" для вывода строковой информации) Если хочешь числа первым параметром ставишь - 0 Если хочешь строку первым параметром ставишь - 1 Относительная полумера но при отладке полегче. Вопрос: А можно найти такой умный алгоритм чтобы обойтись без флага. Чтобы функция сама опредилила какое (числовое или строковое) значение находится в её параметре. Задаю этот вопрос потому что, знаю что например в языке Autoit есть прототип функции "MessageBox" (естественно дополненный каким то умным алгоритмом) и какое бы значение ты бы в неё не поставил она правильно выводит информацию Кто нибудь знает такой умный алгоритм?
Вы передаёте ссылку на строку, а это число. Память по раскрытой ссылке может быть доступна, а может быть не доступна, так что дело случая. Следовательно попытка идентификации строки(например по предельным символам) бессмысленна, тоесть решения нет. Это необходимо на уровне скрипта делать, тоесть сам компилятор должен определить что за значение - строка, обьект или есчо что. Да и маразм это - какая разница, что есть аргумент, что его нет. Для особых извратов можно написать надстройку, выполняющую анализ контекста, памяти, кода описанного графом и пр.
assch Флаги - это "горе от ума", т.к. в данном случае проще юзать отдельные макросы или функции для вывода числовых знач-й, например, MesBoxN. Можно и парочку ф-й сделать для вывода числа в десятичном и hex-виде Использование overload-вариантов определения ф-й - это приблуды языков высокого уровня (ЯВУ), в которых используется более жесткая типизация переменных, чем в асме. При этом выбор варианта осуществляет не "сама функция", а компилятор, который встречая overload-вызов, ищет "выше по тексту" тип переданных в функцию аргументов и затем вместо overload подставляет вызов конкретной\частной ф-ии, соотв-й переданному типу. Кстати, благодаря той же типизации, в ЯВУ при передаче строк типа *char, &char и т.п., можно передавать непосредственно идентифкатор строки без оператора взятия ссылки\указателя - может ты и этот вопрос хочешь попутно решить, чтобы не писать "по сто раз" addr при передаче строк?!
Задача конечно не тривиальная. Тему я поднял с простой надеждой с миру по нитки. (собственно если я не ошибаюсь форумы и существуют для этого). Так что буду рад любым советам. Кстати без "addr" тоже не плохо было бы.
может стоит изменить своим привычкам ?! и юзать вывод инфо в отладочную консоль и просматривать ее при помощи dbgview, также можно нагуглить на этом форуме реализацию dprintf, тем более юзанье месаджбокса чревато иногда неожиданными последствиями и глюками.