Вверх ↑
Этот топик читают: Гость
Ответов: 84
Рейтинг: 1
#31: 2012-10-14 23:58:36 ЛС | профиль | цитата
nesco, понял, всё получилось - спасибо.
карма: 1

0
Ответов: 84
Рейтинг: 1
#32: 2012-10-16 23:06:17 ЛС | профиль | цитата
С фильтрацией всё закончил, всё работает.
Теперь новая беда. После ввода данных поле Edit содержит текст. Этот текст стилизован под шеснадцатеричное число, например 1234567890AB. Мне нужно увеличить это число на единицу, т.е. получить 1234567890AС.
Путь который я понимаю как реализовать, это разбивать всю строку посимвольно, анализировать последний символ и на основе анализа подсовывать другой символ. Но это очень громоздко. Может есть способ проще.
карма: 1

0
Ответов: 8930
Рейтинг: 823
#33: 2012-10-16 23:22:30 ЛС | профиль | цитата
NordWest, а с таким чиcлом как: 1234567890FF, или с таким: 12FFFFFFFFFF
карма: 19

0
Ответов: 16884
Рейтинг: 1239
#34: 2012-10-16 23:32:33 ЛС | профиль | цитата
NordWest писал(а):
Теперь новая беда.
Это не новая беда.
Ты скажи, ты скажи,
Чё те надо, чё надо
К о н к р е т н о.
Перебрать все возможные MAC адреса, начиная с введенного ?
Леонид, 12FFFFFFFFFF+1=130000000000
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 84
Рейтинг: 1
#35: 2012-10-17 10:11:21 ЛС | профиль | цитата
а с таким чиcлом как: 1234567890FF, или с таким: 12FFFFFFFFFF
Вот именно. Если проверять переносы в старшие разряды, то вообще всё громоздко.

Перебрать все возможные MAC адреса, начиная с введенного ?
Нет, все возможные мне не нужны.
Мне нужно получить число на единицу больше введенного.
------------ Дoбавленo в 10.11:
Блин, вроде победил сам.



Add(MainForm,2953706,63,35)
{
Width=184
Height=146
}
Add(Edit,14795161,133,35)
{
Left=25
Top=25
}
Add(MultiElementEx,9682406,133,91)
{
link(String,14795161:Text,[])
link(onData,4553593:doText,[])
}
BEGIN_SDK
Add(EditMultiEx,520987,21,21)
{
WorkCount=#8:doEvent1|
EventCount=#6:onData|
DataCount=#6:String|
Width=503
Height=172
link(doEvent1,14530553:doEvent1,[(35,27)(35,62)])
}
Add(Convertor,5556072,140,126)
{
Mode=3
link(onResult,4939986:doOperation,[])
}
Add(Str_Enum,13949220,84,126)
{
Delimiter=""
Direct=1
link(onEnum,5556072:doConvert,[])
link(String,520987:String,[(90,43)(27,43)])
}
Add(Memory,2370771,189,70)
{
Default=Integer(1)
}
Add(Math,4939986,182,126)
{
link(onResult,8028056:doCompare,[])
link(Op2,2370771:Value,[])
}
Add(If_else,8028056,238,126)
{
Type=2
Op2=Integer(70)
link(onTrue,7665811:doData,[(279,132)(279,110)(233,110)(233,76)])
link(onFalse,10594876:doEvent1,[])
}
Add(DoData,7665811,245,70)
{
Data=Integer(48)
link(onEventData,12801416:doEvent1,[])
}
Add(If_else,11409266,308,77)
{
Op2=Integer(58)
link(onTrue,517644:doData,[])
link(onFalse,12801416:doEvent3,[])
}
Add(DoData,517644,364,77)
{
Data=Integer(65)
link(onEventData,12801416:doEvent2,[])
}
Add(Hub,10594876,301,133)
{
link(onEvent1,11409266:doCompare,[(327,139)(327,123)(292,123)(292,83)])
link(onEvent2,5457840:doData,[(327,146)(327,167)(123,167)(123,76)])
}
Add(DoData,5457840,140,70)
{
Data=Integer(0)
link(onEventData,2370771:doValue,[])
}
Add(Hub,12801416,420,70)
{
InCount=3
OutCount=1
link(onEvent1,7992796:doConvert,[(442,76)(442,99)(401,99)(401,125)])
}
Add(Memory,10473380,462,49)
{
link(onData,520987:onData,[(509,55)(509,27)])
}
Add(StrCat,949239,455,119)
{
link(onStrCat,10473380:doValue,[(499,125)(499,98)(450,98)(450,55)])
link(Str2,10473380:Value,[])
}
Add(Convertor,7992796,406,119)
{
Mode=4
link(onResult,949239:doStrCat,[])
}
Add(Hub,14530553,49,56)
{
OutCount=3
link(onEvent1,10473380:doClear,[])
link(onEvent2,2370771:doClear,[(130,69)(130,83)])
link(onEvent3,13949220:doEnum,[(73,76)(73,132)])
}
END_SDK
Add(Button,16697015,63,91)
{
Left=35
Top=65
link(onClick,9682406:doEvent1,[])
}
Add(Edit,4553593,196,91)
{
Left=90
Top=25
}

карма: 1

0
Гость
Ответов: 17029
Рейтинг: 0
#36: 2012-10-17 11:26:01 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-11 00:19:56
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#37: 2012-10-17 11:26:55 ЛС | профиль | цитата
Выше 46-116-151-244.bb.netvisi = Tad
Можно ещё упростить:
Если не больше 15 (F), то дальше уже проверка не нужна и делать +0 совершенно лишнее - последующие Hex-значения идут без изменения.
Рисовать алгоритм на бумажке карандашом совершенно не лишнее.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
1
Голосовали:NordWest
Ответов: 84
Рейтинг: 1
#38: 2012-10-17 12:23:54 ЛС | профиль | цитата
Tad, а у меня ваш код не работает.
карма: 1

0
Ответов: 16884
Рейтинг: 1239
#39: 2012-10-17 12:29:18 ЛС | профиль | цитата
NordWest писал(а):
а у меня ваш код не работает
И что пишет в окне "Отладка"?
У кого ещё не работает ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 84
Рейтинг: 1
#40: 2012-10-17 12:32:32 ЛС | профиль | цитата
А разве можно перебирая элементы строки использовать конвертер Hex->Int ?

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#41: 2012-10-17 12:36:10 ЛС | профиль | цитата
Перебирая Hex-строку (что ты и делаешь) - можно.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 84
Рейтинг: 1
#42: 2012-10-17 13:13:40 ЛС | профиль | цитата
Да действительно. Перебирая строку посимвольно Hex->Int срабатывает верно. А вот дальнейшее преобразование Int->Hex походу нельзя - получаем цифры а не символы.
------------ Дoбавленo в 13.13:
Хотя нет... Проблема в том, что почему-то Str_Enum не формирует событие окончания перебора.
Так работает...



Add(MainForm,868507,105,98)
{
Width=412
Height=146
}
Add(Edit,14795161,175,98)
{
Left=25
Top=25
Width=145
Text="12FFFFFFFFFF"
}
Add(MultiElementEx,9682406,175,154)
{
link(onData,4553593:doText,[])
link(String,14795161:Text,[])
}
BEGIN_SDK
Add(EditMultiEx,520987,21,21)
{
WorkCount=#8:doEvent1|
EventCount=#6:onData|
DataCount=#6:String|
Width=503
Height=221
link(doEvent1,14530553:doEvent1,[(35,27)(35,62)])
}
Add(Convertor,5556072,133,126)
{
Mode=5
link(onResult,4939986:doOperation,[])
}
Add(Str_Enum,13949220,84,126)
{
Delimiter=""
Direct=1
link(onEnum,5556072:doConvert,[])
link(onEndEnum,11914522:doData,[(125,139)(125,202)])
link(String,520987:String,[(90,43)(27,43)])
}
Add(Memory,2370771,189,77)
{
Default=Integer(1)
}
Add(Math,4939986,182,126)
{
link(onResult,8028056:doCompare,[])
link(Op2,2370771:Value,[])
}
Add(If_else,8028056,238,126)
{
Type=2
Op2=Integer(15)
link(onTrue,7665811:doData,[(282,132)(282,97)])
link(onFalse,10594876:doEvent1,[])
}
Add(DoData,7665811,287,91)
{
Data=String(0)
link(onEventData,236110:doWork2,[(329,97)(329,125)])
}
Add(Hub,10594876,301,133)
{
link(onEvent1,236110:doWork3,[(354,139)])
link(onEvent2,5457840:doData,[(343,146)(343,167)])
}
Add(DoData,5457840,371,161)
{
Data=Integer(0)
link(onEventData,2370771:doValue,[(413,167)(413,72)(177,72)(177,83)])
}
Add(StrCat,949239,434,119)
{
Point(doClear)
link(onStrCat,520987:onData,[(495,125)(495,27)])
link(Str2,4606424:Var3,[(447,107)(473,107)(473,165)])
}
Add(Convertor,7992796,371,119)
{
Mode=6
Digits=1
link(onResult,949239:doStrCat,[])
}
Add(Hub,14530553,49,56)
{
OutCount=3
link(onEvent1,949239:doClear,[(419,62)(419,132)])
link(onEvent2,2370771:doClear,[(100,69)(100,90)])
link(onEvent3,13949220:doEnum,[(73,76)(73,132)])
}
Add(HubEx,236110,350,119)
{
link(onEvent,7992796:doConvert,[])
}
Add(DoData,11914522,434,196)
{
link(Data,4606424:Var2,[])
}
Add(GetDataEx,4606424,434,160)
{
link(Data,949239:Result,[])
}
END_SDK
Add(Button,16697015,105,154)
{
Left=35
Top=65
link(onClick,9682406:doEvent1,[])
}
Add(Edit,4553593,238,154)
{
Left=185
Top=25
Width=155
}

карма: 1

0
Ответов: 16884
Рейтинг: 1239
#43: 2012-10-17 13:47:57 ЛС | профиль | цитата
NordWest писал(а):
Str_Enum не формирует событие окончания перебора
Кончаем открывать Америку.
У тебя HiAsm какого года выпуска ?
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Гость
Ответов: 17029
Рейтинг: 0
#44: 2012-10-17 14:13:46 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-11 00:19:56
карма: 0

0
Ответов: 84
Рейтинг: 1
#45: 2012-10-17 14:14:09 ЛС | профиль | цитата
Версия 4.04 b.118
карма: 1

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)