- Код: Выделить всё
procedure TForm2.fullnameKeyPress(Sender: TObject; var Key: char);
begin
if not (Key in ['а'..'я', 'a'..'z', #32, #8]) then
Key := #0
end;
Пишу простую функцию и тут проблема я так понимаю с кириллицей

Решал ли кто такой вопрос?
Модератор: Модераторы
procedure TForm2.fullnameKeyPress(Sender: TObject; var Key: char);
begin
if not (Key in ['а'..'я', 'a'..'z', #32, #8]) then
Key := #0
end;
if not(UTF8ToSys(UTF8Key)[1] in [#224..#255, #97..#122, #8]) then
UTF8Key:=#0 ;
mkazakov писал(а):Пишу простую функцию и тут проблема я так понимаю с кириллицей
Решал ли кто такой вопрос?
SSerge писал(а):и нет никакой возможности выбрать символ по индексу в строке как в массиве символов.
stikriz писал(а):сё работает нормально, если перевести на WideChar, WideString.
var
w: widestring;
begin
w:=UTF8ToUTF16('Über'); // correct
Button1.Caption:=UTF16ToUTF8(w);
end;
Function IsPresent(Const aString: String; Const aArray: Array of String): Boolean;
Var
i: Integer;
Begin
Result := FALSE;
For i := Low(aArray) To High(aArray) Do
If aArray[i] = aString Then
Exit(TRUE);
End;
Гораздо проще и быстрее по сути
function IsPresent(symbol:string):boolean;
begin
Result:=UTF8Pos(symbol,'абвгдекжзийклмноп')>0;
end;
SSerge писал(а):И всё ради того чтобы обращаться к элементу строки через скобки?![]()
procedure TForm1.Edit1UTF8KeyPress(Sender: TObject; var UTF8Key: TUTF8Char);
begin
with Sender as TEdit do
if (SelStart = 0) or
(Text[SelStart] = ' ') then
if (UTF8ToSys(UTF8Key)[1] in [#224..#255, #97..#122]) then
UTF8Key:=UTF8UpperCase(UTF8Key);
end;
Сейчас этот форум просматривают: svk12 и гости: 230