使用空格(#32)初始化char数组非空(#0)

yan*_*gji 5 delphi

我使用delphi 2010.我需要用空格填充char数组而不是空值.我使用下面的代码不起作用.

procedure TForm1.FormCreate(Sender: TObject);
var
  aCharArray: array[0..9] of Char;
begin
  FillChar(aCharArray, sizeof(aCharArray), #32); // doesn't work
  FillChar(aCharArray, sizeof(aCharArray), ' '); // doesn't work

  Caption := aCharArray;
end;
Run Code Online (Sandbox Code Playgroud)

标题印有奇怪的十字架.在一系列的ansichar中运作良好.

请让我知道原因和解决方案.

谢谢.

Dav*_*nan 10

FillChar在Unicode Delphi中错误命名.它应该真的命名FillAnsiChar.因此,您正在使用具有序数值的UTF-16字符填充字符串$2020,即U + 2020(DAGGER),†.

相反,你应该使用StringOfChar:

Caption := StringOfChar(' ', 10);
Run Code Online (Sandbox Code Playgroud)