Команда DIG
|
|
Флюс |
Дата: Вт, 01.05.2012, 17:11 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
7
Замечания:
±
На сайте с 11.04.2012
Статус:
Offline
|
Помогите начинающему пжалста? Образовался вопрос: команда dig может извлечь 4 порядковых номера в числе, а как поступить если у меня число из 8 цифр или 10? то есть 0123 она может обработать, а 01234567 уже ни как... Если можно, то с простым примером, чтобы понять принцип
|
|
|
|
ADMIN |
Дата: Вт, 01.05.2012, 18:34 | Сообщение # 2 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Если число из 8 цифр, то имеет смысл разбить его на два числа по 4 цифры. Например, число 12345678 можно разбить на 1234 и 5678.
|
|
|
|
Флюс |
Дата: Вт, 01.05.2012, 18:41 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
7
Замечания:
±
На сайте с 11.04.2012
Статус:
Offline
|
как?
|
|
|
|
ADMIN |
Дата: Вт, 01.05.2012, 18:56 | Сообщение # 4 |
Администратор
Группа:
Администраторы
Ранг:
Специалист
Сообщений:
1086
Замечания:
±
На сайте с 20.08.2007
Статус:
Offline
|
Пока не знаю, нужно подумать. А какая конечная задача? Может, есть другое решение?
|
|
|
|
Флюс |
Дата: Вт, 01.05.2012, 19:49 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
7
Замечания:
±
На сайте с 11.04.2012
Статус:
Offline
|
Задача нарисовать на семисегментном индикаторе 12345678
|
|
|
|
rvstar |
Дата: Вт, 01.05.2012, 21:07 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
a = 123
b = a DIG 0 т.е. 0 разряд от 123, т.е. b = 3
b = a DIG 1 - b = 2
b = a DIG 2 - b = 1
RE: Задача нарисовать на семисегментном индикаторе 12345678
Думаю, надо использовать конструкцию SELECT....CASE (см. мануал)
Сообщение отредактировал
rvstar - Вт, 01.05.2012, 21:11
|
|
|
|
Флюс |
Дата: Ср, 02.05.2012, 00:25 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
7
Замечания:
±
На сайте с 11.04.2012
Статус:
Offline
|
Quote (rvstar) a = 123 b = a DIG 0 т.е. 0 разряд от 123, т.е. b = 3 b = a DIG 1 - b = 2 b = a DIG 2 - b = 1 RE: Задача нарисовать на семисегментном индикаторе 12345678 Думаю, надо использовать конструкцию SELECT....CASE (см. мануал) И что нам это дает? Как использовать DIG и почитать мануал я и так додумался Вопрос что делать если в вашем примере, например к примеру, а=12345678?и нужно не четыре цыфири а все восемь? и как вы предлагаете использовать CASE? Я с таким же успехом могу посоветовать использовать DELAYMS к примеру Неуж-то ни кто не отображал на семисегментниках цыфры? Думаю тут есть решение, только где тут сцобако порылась?
|
|
|
|
passer_by |
Дата: Ср, 02.05.2012, 06:39 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
17
Замечания:
±
На сайте с 23.10.2011
Статус:
Offline
|
Quote (Флюс) Думаю тут есть решение, только где тут сцобако порылась?
Э... а если, ну так, скуки ради, кнопочку "поиск" нажать по слову "индикация"
|
|
|
|
rvstar |
Дата: Ср, 02.05.2012, 10:17 | Сообщение # 9 |
Группа:
Проверенные
Ранг:
Понимаю
Сообщений:
69
Замечания:
±
На сайте с 09.10.2007
Статус:
Offline
|
Схему девайса нарисуйте, помогу. В Splan`е или в любом графическом формате
Сообщение отредактировал
rvstar - Ср, 02.05.2012, 10:17
|
|
|
|
ivan_fd |
Дата: Ср, 02.05.2012, 17:48 | Сообщение # 10 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
Например вот так:
Code Dim dwrd As Dword Dim dig1 As Byte Dim dig2 As Byte Dim dig3 As Byte Dim dig4 As Byte Dim dig5 As Byte Dim dig6 As Byte Dim dig7 As Byte Dim dig8 As Byte
begin: dwrd = 12345678 dig1 = (dwrd / 10000000) // 10 dig2 = (dwrd / 1000000) // 10 dig3 = (dwrd / 100000) // 10 dig4 = (dwrd / 10000) // 10 dig5 = (dwrd / 1000) // 10 dig6 = (dwrd / 100) // 10 dig7 = (dwrd / 10) // 10 dig8 = (dwrd / 1) // 10
GoTo begin
|
|
|
|
Флюс |
Дата: Ср, 02.05.2012, 21:39 | Сообщение # 11 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
7
Замечания:
±
На сайте с 11.04.2012
Статус:
Offline
|
Уважаемый ivan_fd! Можно с комментами плз? почему так заработает? ну не умею я профессионально программировать объясните тупому? Quote (ivan_fd) Dim dig8 As Byte begin: dwrd = 12345678 dig1 = (dwrd / 10000000) // 10 dig2 = (dwrd / 1000000) // 10 dig3 = (dwrd / 100000) // 10 dig4 = (dwrd / 10000) // 10 dig5 = (dwrd / 1000) // 10 dig6 = (dwrd / 100) // 10 dig7 = (dwrd / 10) // 10 dig8 = (dwrd / 1) // 10 GoTo begin
А то тут только в гугл отсылают да в поиск, а меня в гугле забанили уже..
|
|
|
|
ivan_fd |
Дата: Ср, 02.05.2012, 22:14 | Сообщение # 12 |
Группа:
Модераторы
Ранг:
Специалист
Сообщений:
894
Замечания:
±
На сайте с 12.01.2009
Статус:
Offline
|
dwrd = 12345678 - ваше число, поскольку оно занимает 6 байт, то берем тип переменной DWORD. dig1 = (dwrd / 10000000) // 10 - первая цифра слева, у нас 1. Делаем целочисленное деление на 10 000 000, потому, что у нас есть 7 знаков после той цифры, какую нам нужно узнать. И дальше, остаток от деления на 10.
|
|
|
|
Флюс |
Дата: Ср, 02.05.2012, 23:59 | Сообщение # 13 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
7
Замечания:
±
На сайте с 11.04.2012
Статус:
Offline
|
понятно. Спасибо
|
|
|
|