|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.06.2011, 01:51 | #1 |
Пользователь
Регистрация: 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" (естественно дополненный каким то умным алгоритмом) и какое бы значение ты бы в неё не поставил она правильно выводит информацию Кто нибудь знает такой умный алгоритм? |
06.06.2011, 05:01 | #2 |
equ asm
Участник клуба
Регистрация: 02.05.2009
Сообщений: 1,605
|
Ну а как можно отличить, к примеру, 403052h (строка) от 400276h(число) ?
Наверное только, если вы сделаете проверку на то, может ли по аддресу 400276h что-то находится. Но это точно не 100% алгоритм, так что лучше флаги, как мне кажется. Тем более, что эта функция у вас только для отладки. |
06.06.2011, 06:30 | #3 |
somewhere else
Участник клуба
Регистрация: 17.07.2008
Сообщений: 1,409
|
В ЯВУ есть возможность как статического, так часто и динамического определения типа, а тут вы работаете с raw-данными и никаких token-ов типа, что бы их можно различать, у ваших переменных нет.
"Тяжело в учении, легко в бою" - А.В. Суворов
|
06.06.2011, 20:37 | #4 | |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
Цитата:
|
|
06.06.2011, 21:39 | #5 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Проблема не в написании функции а в алгоритме распознавания значений
(строковых или числовых) |
06.06.2011, 21:46 | #6 |
добрый няша
Старожил
Регистрация: 29.10.2006
Сообщений: 4,804
|
просто заведи ещё один параметр, через который будешь передавать число
например, MessageBox(handle, text, caption, flags, shownumber:boolean; value_of_number:integer) |
06.06.2011, 22:50 | #7 |
Пользователь
Регистрация: 13.09.2010
Сообщений: 65
|
Моя функция (уже готовая) находится в файле "Box.rar" прикреплённый к первому
посту, имеет три параметра (в посте есть описание). Один из параметров это флаг. Я имел ввиду как обойтись без флага то есть двумя параметрами (шапка и значение) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как сделать функцию обновление | 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 |