delphi 判断字符串里的char是单字节还是双字节的前一位或后一位。
function ByteType(const S: string; Index: Integer): TMbcsByteType;
// 判断一个字符串中,某个 Char 是单个字母,还是双字节的前一位或后一位。
// mbSingleByte 单字母
// mbLeadByte 双字节第一位
// mbTrailByte 双字节第二位
const
InvalidChars : set of char = ['\', '/', ':', '*', '?', '"', '<', '>', '|'];
function IsValidFilename(const fname: String): Boolean;
var
I: Integer;
begin
Result := fname <> '';
if Result then
begin
for I := 1 to Length(fname) do
begin
if ByteType(fname,i) <> mbSingleByte then
Continue;
Result := NOT (fname[I] in InvalidChars);
if NOT Result then Break;
end;
end;
end;