如何为char分配值?

时间:2018-04-28 22:30:24

标签: delphi-2010

这是一个很愚蠢的问题,但我现在已经坚持了很长一段时间。我想复制字符串的第一个字母并将其存储在char变量中,然后使用' IN'来测试此变量是大写还是小写。声明。当我尝试将第一个字母存储到字符中时,我收到了不兼容类型的错误,并且我不确定如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

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是Delphi 2009+中WideChar的别名,您不应在集合中使用宽字符,因为它们会被截断。在这种情况下,您可以改为使用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;