Как назначить значение для символа? - PullRequest
0 голосов
/ 29 апреля 2018

Довольно глупый вопрос, но я застрял в этом довольно давно. Я хочу скопировать первую букву строки и сохранить ее в переменной типа char, а затем проверить, является ли эта переменная заглавной или строчной буквой с помощью оператора IN. Я получаю сообщение об ошибке несовместимых типов, когда пытаюсь сохранить первую букву в символе, и я не совсем уверен, как мне обойти это.

1 Ответ

0 голосов
/ 29 апреля 2018
var
  S: string;
  C: char;
begin
  S := ...;
  C := S[1];
  if C in ['A'..'Z'] then
  begin
    ...
  end
  else if C in ['a'..'z'] then
  begin
    ... 
  end;
end;

При этом обратите внимание, что Char является псевдонимом для WideChar в Delphi 2009+, и вы не должны использовать широкие символы в наборах, так как они будут усечены. В этом случае вы можете использовать функцию CharInSet() вместо:

uses
  ..., SysUtils;

var
  S: string;
  C: char;
begin
  S := ...;
  C := S[1];
  if CharInSet(C, ['A'..'Z']) then
  begin
    ...
  end
  else if CharInSet(C, ['a'..'z']) then
  begin
    ... 
  end;
end;

Или, что лучше, используйте функции IsUpper() и IsLower():

uses
  ..., Character;

var
  S: string;
  C: char;
begin
  S := ...;
  C := S[1];
  if IsUpper(C) then
  begin
    ...
  end
  else if IsLower(C) then
  begin
    ... 
  end;
end;

uses
  ..., Character;

var
  S: string;
begin
  S := ...;
  if IsUpper(S, 1) then
  begin
    ...
  end
  else if IsLower(S, 1) then
  begin
    ... 
  end;
end;
...