![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос про WideChar
cyber-pilot © (2010-11-15 13:09:00)Есть код:
procedure TForm1.btn1Click(Sender: TObject);
var
s: WideString;
vChar: WideChar;
begin
s := 'ж';
vChar := s[1];
if (vChar >= 'а') and (vChar <= 'я') then
ShowMessage('Сработало!!!');
end;
procedure TForm1.btn2Click(Sender: TObject);
var
vChar: WideChar;
begin
vChar := 'ж';
if (vChar >= 'а') and (vChar <= 'я') then
ShowMessage('Сработало!!!');
end;
Кто-нибудь может объяснить почему во втором случае срабатывает условие, а в первом нет?
cyber-pilot (2010-11-15 14:41:00) [1]
> Anatoly Podgoretsky © (15.11.10 14:25) [6]
А... понятно. Спасибо!
Anatoly Podgoretsky (2010-11-15 14:25:00) [2]> cyber-pilot (15.11.2010 14:18:05) [5]
У тебя весь код неправильный, надо прямое приведение для всех литералов,
иначе будешь постоянно ходить по граблям.
Нельзя писать 'a', надо WideChar('a');
cyber-pilot (2010-11-15 14:18:00) [3]А как в таком случае проверить, что WideChar-символ является русской буквой?
Anatoly Podgoretsky (2010-11-15 13:59:00) [4]Меняет, 'ж' это AnsiString
А s := 'ж'; это WideChar
cyber-pilot (2010-11-15 13:51:00) [5]
> Конечно, и этот кто-то - отладчик
Под отладчиком я конечно же запускал. В первом случае отладчик показывает, что в vChar находится 'ж', но при этом не хочет сравнивать. Во втором случае в vChar оказывается какой-то иероглиф, но при этом сравнивается правильно.
> Может у тебя Д2007-
Да, у меня Д2007. Это что-то меняет?
Anatoly Podgoretsky (2010-11-15 13:46:00) [6]Может у тебя Д2007-
Игорь Шевченко (2010-11-15 13:14:00) [7]
> Кто-нибудь может объяснить почему во втором случае срабатывает
> условие, а в первом нет?
Конечно, и этот кто-то - отладчик