Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.04.2011, 09:59   #1
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию Множество кириллицы

В общем проблема в следующем: я объявил множество кириллицы, но символ из кириллицы при проверке на принадлженость выдаёт false. Подскажите пожалуйста, в чем проблема.

Код:
  const
Kiriliza: Set of 'а'..'я'=['а'..'я'];
Код:
s1:='е';
if s1 in Kiriliza then Result:=true else Result:=false;
Sauber вне форума Ответить с цитированием
Старый 02.04.2011, 10:44   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) НЕ ПОДТВЕРЖДАЮ!
Код:
const
  Kiriliza: Set of 'а'..'я'=['а'..'я'];

function TestKir : boolean;
var s1 : char;
begin
 s1:='е';
 if s1 in Kiriliza
    then Result:=true else Result:=false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if TestKir then ShowMessage('Буква входит в кириллицу!')
    else ShowMessage('Нет, это не кириллица!');
end;
Результат - 'Буква входит в кириллицу!'


2)
при подобном описании ОЧЕНЬ важно, под какой ОС работает компилятор. (точнее, какая кодовая таблица используется).
Подобное описание элементов множества через .. предполагает, что создаётся множество от элемента с кодом 'a' до элемента с кодом 'я'!
А ведь коды букв зависят от кодовой таблицы - где в таблице буква 'а' (какой у неё код), где буква 'я'(какой код) и какие символы имеют коды,
попадающие в диапазон между ними!

Например,
такое в описание в TurboPascal породит следующее множество:
Изображения
Тип файла: jpg kiril.jpg (4.6 Кб, 134 просмотров)

Последний раз редактировалось Serge_Bliznykov; 02.04.2011 в 10:47.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.04.2011, 11:06   #3
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию

хм, странно. ОС Windows 7, Рабочая среда- Embarcadero.

Код:
 const
Kiriliza: Set of 'а'..'я'=['а'..'я'];
Latiniza: Set of 'a'..'z'=['a'..'z'];
Numbers: Set of '0'..'9'=['0'..'9'];
type
 func=function ( a,b:widechar):boolean;
procedure Sortirovka(var a:string; f:func);
function Light(s1,s2:char):boolean;
function Hard(s1,s2:char):boolean;

implementation
function Light(s1,s2:widechar):boolean;
begin
if s1>s2 then Result:=True else result:=false;
end;

function Hard(s1,s2:widechar):boolean;
begin
if (s1 in Kiriliza) and (s2 in Kiriliza) then  if s1>s2 then Result:=true else
 Result:=false;
При режиме отладки возвращает false

прописал ваш код и у меня выдает: "Нет, это не кириллица"

Последний раз редактировалось Stilet; 02.04.2011 в 12:06.
Sauber вне форума Ответить с цитированием
Старый 02.04.2011, 12:06   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
var s1 : char;
В 2010 ке возможно символ юникодовый. Попробуй указать тип AnsiChar;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.04.2011, 12:17   #5
Sauber
Пользователь
 
Регистрация: 21.11.2010
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
В 2010 ке возможно символ юникодовый. Попробуй указать тип AnsiChar;
спасибо Вам большое, помогло)

а также string сменить на AnsiString нужно

Последний раз редактировалось Stilet; 02.04.2011 в 16:30.
Sauber вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Расшифровка HTML-кодов кириллицы mixer94 Работа с сетью в Delphi 8 03.09.2011 17:26
Задано некоторое множество М и множество Т того же типа dark999 Помощь студентам 5 01.04.2011 14:17
С++ builder и вставка кириллицы в БД Пинкертон C++ Builder 7 30.08.2010 23:28
Передача кириллицы через GET ADSoft PHP 5 25.10.2009 18:39