在一个表中,我有一个大小为60的TBytesField。创建记录且此字段设置为nil时,我想将其值设置为字节数组,例如[0,0,0.....0]。我正在使用此代码:

var
  ar : array of byte;
begin
  if ByteField.AsBytes = nil then
  begin
    SetLength(ar, ByteField.Size);
    ByteField.SetData(ar, True);
  end;
end;


尽管ar的所有字节均为零,但我看到该字段取而代之的是这些值:

[17,32,0,0,0,0,0,0,48,192,182,1,0...0]


我究竟做错了什么?

最佳答案

不要直接使用SetData()。使用AsBytes属性:

var
  ar : TBytes;
begin
  if ByteField.IsNull then
  begin
    SetLength(ar, ByteField.Size);
    ByteField.AsBytes := ar;
  end;
end;

关于delphi - Delphi TBytesField SetData,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44742419/

10-13 07:57