将 Char 数组定义为常量?
Define an array of Char as constant?
我在 Delphi 10.3.3 中使用此功能:
function StrTrimCharsLeft(const S: string; const Chars: array of Char): string;
var
I, L: SizeInt;
begin
I := 1;
L := Length(S);
while (I <= L) and ArrayContainsChar(Chars, S[I]) do
Inc(I);
Result := Copy(S, I, L - I + 1);
end;
当我以这种方式使用函数时出现错误:
[dcc32 Error]: E2250 There is no overloaded version of 'StrTrimCharsLeft' that can be called with these arguments
const
BomChars = ['ï', '»', '¿'];
...
s := JclStrings.StrTrimCharsLeft(s, BomChars);
但是当我这样使用时,一切正常,没有错误:
s := JclStrings.StrTrimCharsLeft(s, ['ï', '»', '¿']);
那么如何定义和使用 Char
的数组作为常量?
写的时候
const
BomChars = ['ï', '»', '¿'];
您已经声明了一个名为 BomChars
的 set -- 不是数组!
如果您改为将 BomChars
声明为 static array,
const
BomChars: array[0..2] of Char = ('ï', '»', '¿');
它会起作用的。 (参见 Declared Constants § Array Constants。)
(StrTrimCharsLeft(s, ['ï', '»', '¿']);
有效,因为这里的括号是 open array 语法的一部分。具体来说,括号是 "open array constructor" 的一部分。)
我在 Delphi 10.3.3 中使用此功能:
function StrTrimCharsLeft(const S: string; const Chars: array of Char): string;
var
I, L: SizeInt;
begin
I := 1;
L := Length(S);
while (I <= L) and ArrayContainsChar(Chars, S[I]) do
Inc(I);
Result := Copy(S, I, L - I + 1);
end;
当我以这种方式使用函数时出现错误:
[dcc32 Error]: E2250 There is no overloaded version of 'StrTrimCharsLeft' that can be called with these arguments
const
BomChars = ['ï', '»', '¿'];
...
s := JclStrings.StrTrimCharsLeft(s, BomChars);
但是当我这样使用时,一切正常,没有错误:
s := JclStrings.StrTrimCharsLeft(s, ['ï', '»', '¿']);
那么如何定义和使用 Char
的数组作为常量?
写的时候
const
BomChars = ['ï', '»', '¿'];
您已经声明了一个名为 BomChars
的 set -- 不是数组!
如果您改为将 BomChars
声明为 static array,
const
BomChars: array[0..2] of Char = ('ï', '»', '¿');
它会起作用的。 (参见 Declared Constants § Array Constants。)
(StrTrimCharsLeft(s, ['ï', '»', '¿']);
有效,因为这里的括号是 open array 语法的一部分。具体来说,括号是 "open array constructor" 的一部分。)