我有一个宽字符串说StringABC 我有一个数组说ArrayABC,这个数组的元素是
ArrayABC[0]='A';
ArrayABC[1]='B';
ArrayABC[2]='C';
现在我必须让stringABC
为
StringABC := ''A','B','C'';
我试图像
那样做StringABC := '';
for (i:=0 to 2) do
begin
StringABC := StringABC + ArrayABC[i] + ',';
if i = 2
stringABC := StringABC + ArrayABC[i];
end
我的结果为stringABC = 'A,B,C'
但不是''A','B','C''
我的代码应该改进什么?
答案 0 :(得分:4)
StringABC := '';
for (i:=0 to 2) do
begin
StringABC := StringABC + '''' + ArrayABC[i] + ''',';
if i = 2
stringABC := StringABC + '''' + ArrayABC[i] + '''';
end
虽然我只是用逗号连接所有i,但最后删除最后一个逗号。
答案 1 :(得分:4)
Const
StringArray:Array[7..11] of String=('A','B','C','D','E');
Function GetQuotedStringArray(const a:Array of String) : String;
var
i:Integer;
Function GetComma:String;
begin
if i <> High(a) then
Result :=',' else Result :='';
end;
begin
for I := Low(a) to High(a) do
Result := Result + QuotedStr(a[i]) + GetComma;
end;
procedure TForm4.Button1Click(Sender: TObject);
begin
Showmessage(GetQuotedStringArray(StringArray));
end;
答案 2 :(得分:2)
另一种选择:
const
StringArray:Array[7..11] of String=('A','B','C','D','E');
function GetQuotedStringArray(const a:Array of String): String;
var
i: Integer;
ComStrings: TStringList;
begin
ComStrings := TStringList.Create;
try
ComStrings.QuoteChar := '''';
for i := low(a) to high(a) do
ComStrings.Add(a[i]);
Result := ComStrings.CommaText;
finally
ComStrings.Free;
end;
end;