Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.10.02;
Скачать: CL | DM;

Вниз

Проверка в множестве   Найти похожие ветки 

 
avil   (2011-06-12 15:00) [0]

win7,d2010

Господа, объясните мне, убогому, ЧЯДНТ? Есть код:
 function gets(c: char; n: integer; a: array of char): char;
 var
   l: integer;
 begin
   result := c;
   if CharInSet(c,[a[0]..a[1]]) then
   begin
     {code}
   end;
 end;


Каждый символ текста прогоняется через эту функцию. Когда в функцию приходят c = "," и a = ("А","Я") при проверке CharInSet возвращается TRUE. Пробовал менять на классический c in [], и заменял char`ы на ординальные аналоги, но все равно возвращается TRUE. Ординальное значение "," = 44, "A" = 192, "Я" = 223. ПОЧЕМУ?


 
MBo ©   (2011-06-12 15:14) [1]

В d2010 Char уже не тот...
Стоит почитать статьи по переходу на юникод


 
avil   (2011-06-12 16:45) [2]

Действительно, проблема в юникоде, на время сделал ansichar. Спасибо за наводку.


 
Loginov Dmitry ©   (2011-06-12 18:32) [3]


> Действительно, проблема в юникоде, на время сделал ansichar.


В множество не должны попадать Unicode-символы. В этой части D2010 недоработана (в том, что не выдает соответствующий Warning, не прерывает компиляцию и самовольно отрезает и выбрасывает старший байт Unicode-символа). Обычно в квадратный скобках идет перечисление символьных констант, а не отдельных элементов массива.
В вашем случае необходимо объявить a: array of AnsiChar.



Страницы: 1 вся ветка

Текущий архив: 2011.10.02;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.008 c
15-1307087801
Dennis I. Komarov
2011-06-03 11:56
2011.10.02
Воду заказывали?


15-1307392194
Юрий
2011-06-07 00:29
2011.10.02
С днем рождения ! 7 июня 2011 вторник


2-1307690430
@!!ex
2011-06-10 11:20
2011.10.02
Кнопки и PageControl игнорируются Font.Charset


2-1307898394
jobitn@mail.ru
2011-06-12 21:06
2011.10.02
помогите переделать на delphi! горюю


4-1251186167
mamedovvms
2009-08-25 11:42
2011.10.02
консольных программ прога зависает на некоторое время на строке l