Форум: "Начинающим";
Текущий архив: 2011.11.06;
Скачать: [xml.tar.bz2];
ВнизКак работает CharInSet? Найти похожие ветки
← →
Cobalt © (2011-07-14 13:46) [0]Д2010
Еcть код
procedure TForm1.btn1Click(Sender: TObject);
var
TmpStr: string;
begin
TmpStr := "Асбест";
Memo1.Lines.Clear;
Memo1.Lines.Add(BoolToStr(TmpStr[1] in ["А".."Я", "Ё"], True));
Memo1.Lines.Add(BoolToStr(TmpStr[2] in ["а".."я", "ё"], True));
Memo1.Lines.Add(BoolToStr(CharInSet(TmpStr[1], ["А".."Я", "Ё"]), True));
Memo1.Lines.Add(BoolToStr(CharInSet(TmpStr[2], ["а".."я", "ё"]), True));
end;
в результате получаю
False
False
False
False
В чем ошибка?
← →
Игорь Шевченко © (2011-07-14 13:56) [1]
> Как работает CharInSet?
вот так:function CharInSet(C: AnsiChar; const CharSet: TSysCharSet): Boolean;
begin
Result := C in CharSet;
end;
function CharInSet(C: WideChar; const CharSet: TSysCharSet): Boolean;
begin
Result := (C < #$0100) and (AnsiChar(C) in CharSet);
end;
← →
Cobalt © (2011-07-14 14:17) [2]Вопрос поставлен неправильно. Переформулирую:
Что мне надо сдедать, чтобы узнать, входит ли определенный символ строки во множество русских заглавных или строчных букв?
← →
Palladin © (2011-07-14 14:25) [3]
procedure TForm1.btn1Click(Sender: TObject);
var
TmpStr: Ansistring;
begin
TmpStr := "Асбест";
Memo1.Lines.Clear;
Memo1.Lines.Add(BoolToStr(TmpStr[1] in ["А".."Я", "Ё"], True));
Memo1.Lines.Add(BoolToStr(TmpStr[2] in ["а".."я", "ё"], True));
Memo1.Lines.Add(BoolToStr(CharInSet(TmpStr[1], ["А".."Я", "Ё"]), True));
Memo1.Lines.Add(BoolToStr(CharInSet(TmpStr[2], ["а".."я", "ё"]), True));
end;
← →
Dimka Maslov © (2011-07-14 14:55) [4]((Ch >= "A") and (Ch <= "Я")) or ((Ch >= "a") and (Ch <= "я")) or (Ch = "Ё") or (Ch = "ё")
← →
Игорь Шевченко © (2011-07-14 15:11) [5]
> Что мне надо сдедать, чтобы узнать, входит ли определенный
> символ строки во множество русских заглавных или строчных
> букв?
1. Сравнивать Ansi-строки
2. использовать GetStringTypeEx
3. Использовать явное сравнение, например
((Ord(C) >= Ord(WideChar("А"))) and (Ord(C) <= Ord(WideChar("Я")))) or (Ord(C) = Ord(WideChar("Ё")))
← →
Cobalt © (2011-07-15 07:45) [6]А чё му widechar не нравится?
← →
Dimka Maslov © (2011-07-15 09:03) [7]у WideChar размер символа 2 байта, тогда по определению множества его элементами могут быть однобайтовые значения.
← →
DVM © (2011-07-15 19:25) [8]
> Cobalt © (14.07.11 14:17) [2]
> Что мне надо сдедать, чтобы узнать, входит ли определенный
> символ строки во множество русских заглавных или строчных
> букв?
Создай строку из всех интересующих тебя символов вместо множества и выполняй Pos над ней и искомым символом. Или варианты выше.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2011.11.06;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.003 c