Blog. Just Blog

Конвертирование юникодных числовых символов в цифры

05.08.2019 | Категория: Образ мышления: Assembler | Автор: ManHunter
Предположим, ваше приложение работает с числами, полученными от пользователя через текстовые поля ввода. Почти со стопроцентной вероятностью это будут привычные нам цифры 0..9, но теоретически в строке ввода могут оказаться юникодные символы из национальных алфавитов, обозначающие цифры. Например, на деванагари (꣑꣒꣓), арабском (٤٥٦) или саураштра (꣗꣘꣙).

Преобразование таких национальных символов в привычные нам цифры легко выполняется одной единственной функцией FoldString. FASM не в курсе о существовании нужного нам флага MAP_FOLDDIGITS, так что придется обозначить его самостоятельно. В остальном никаких сложностей.
  1. buff    rw 100h
  2. num     rw 100h
  3. MAP_FOLDDIGITS = 128
  4.         ...
  5.         ...
  6.         ...
  7.         ; Получить строку из поля ввода
  8.         invoke  GetDlgItemText,[hwnddlg],ID_TXT,buff,100h
  9.  
  10.         ; Сконвертировать юникодные числовые символы в цифры
  11.         invoke  FoldString,MAP_FOLDDIGITS,buff,-1,num,100h
Преобразуются только символы, соответствующие цифрам, все прочие остаются без изменений. После преобразования строки ваше приложение может продолжить работу с нормализованными пользовательскими данными. Вряд ли это вам когда-нибудь понадобится на практике, но все-таки будет полезно узнать.

Читать статью целиком »
Просмотров: 276 | Комментариев: 0

Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2019
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 1 (0.0108 сек.) / Память: 4.75 Mb
Наверх