Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.06.2011, 01:51   #1
assch
Пользователь
 
Регистрация: 13.09.2010
Сообщений: 65
По умолчанию Как сделать функцию MessageBox более умной

Для отладки своих кодов и для вывода информации я привык пользоватся функцией "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"
(естественно дополненный каким то умным алгоритмом) и какое бы значение ты бы в неё не поставил
она правильно выводит информацию

Кто нибудь знает такой умный алгоритм?
Вложения
Тип файла: rar Box.rar (390 байт, 11 просмотров)
assch вне форума Ответить с цитированием
Старый 06.06.2011, 05:01   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Ну а как можно отличить, к примеру, 403052h (строка) от 400276h(число) ?
Наверное только, если вы сделаете проверку на то, может ли по аддресу 400276h что-то находится. Но это точно не 100% алгоритм, так что лучше флаги, как мне кажется. Тем более, что эта функция у вас только для отладки.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Старый 06.06.2011, 06:30   #3
Ivan_32
somewhere else
Участник клуба
 
Аватар для Ivan_32
 
Регистрация: 17.07.2008
Сообщений: 1,409
По умолчанию

В ЯВУ есть возможность как статического, так часто и динамического определения типа, а тут вы работаете с raw-данными и никаких token-ов типа, что бы их можно различать, у ваших переменных нет.
"Тяжело в учении, легко в бою" - А.В. Суворов
Ivan_32 вне форума Ответить с цитированием
Старый 06.06.2011, 20:37   #4
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

Цитата:
Сообщение от assch Посмотреть сообщение
Вопрос: А можно найти такой умный алгоритм чтобы обойтись без флага.
Чтобы функция сама опредилила какое (числовое или строковое) значение находится в её параметре.
Задаю этот вопрос потому что, знаю что например в языке Autoit есть прототип функции "MessageBox"
(естественно дополненный каким то умным алгоритмом) и какое бы значение ты бы в неё не поставил
она правильно выводит информацию

Кто нибудь знает такой умный алгоритм?
проблема в чём собственно состоит? напиши свою функцию аля MyMessageBox и радуйся
rpy3uH вне форума Ответить с цитированием
Старый 06.06.2011, 21:39   #5
assch
Пользователь
 
Регистрация: 13.09.2010
Сообщений: 65
По умолчанию

Проблема не в написании функции а в алгоритме распознавания значений
(строковых или числовых)
assch вне форума Ответить с цитированием
Старый 06.06.2011, 21:46   #6
rpy3uH
добрый няша
Старожил
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,804
По умолчанию

просто заведи ещё один параметр, через который будешь передавать число
например, MessageBox(handle, text, caption, flags, shownumber:boolean; value_of_number:integer)
rpy3uH вне форума Ответить с цитированием
Старый 06.06.2011, 22:50   #7
assch
Пользователь
 
Регистрация: 13.09.2010
Сообщений: 65
По умолчанию

Моя функция (уже готовая) находится в файле "Box.rar" прикреплённый к первому
посту, имеет три параметра (в посте есть описание). Один из параметров это флаг.
Я имел ввиду как обойтись без флага то есть двумя параметрами (шапка и значение)
assch вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как сделать функцию обновление Dryg2009 Работа с сетью в Delphi 6 22.11.2009 15:49
Как сделать обработчик более универсальным? k1r1ch Общие вопросы Delphi 3 11.10.2009 19:17
Как сделать функцию по дефолту от самого себя TwiX Общие вопросы Delphi 2 03.10.2009 17:02
Как это сделать. Указатель на функцию. Levsha100 Свободное общение 15 25.09.2009 05:57
Как сделать более точные координаты мышки xGroupers Общие вопросы Delphi 7 24.04.2008 23:02