sqlserver中某表某字段xxx为Varchar型,存入一些二进制数据(不可见字符)
delphi通过数据集控件(query)取出后,用一string型变量tempstr取tempstr:=FieldValues['xxx'];
但是取出的数据与库中的数据不一致。不知delphi中定义什么类型的变量可以顺利存取二进制字段?
delphi通过数据集控件(query)取出后,用一string型变量tempstr取tempstr:=FieldValues['xxx'];
但是取出的数据与库中的数据不一致。不知delphi中定义什么类型的变量可以顺利存取二进制字段?
有些方面经验的朋友说说看
TS:TStream; //保存从数据库中取出的二进制流
ArrByte:array of byte;
i:integer;
begin
TS:=TStream.Create();
TBlobField(query1.FieldByName('f')).SaveToStream(TS);//获得二进制流
setlength(ArrByte,Ts.size); //设置一个动态数组,保存二进制数据
for i:=1 to TS.Size do //也有可能是 for i:=0 to TS.size-1 do 不记得了
begin
TS.Read(ArrByte[i],1); //如果是后一种循环这里应该是TS.Read(ArrByte[i+1],1);
end; //结束循环后ArrByte里的就是二进制数据
end;
ArrByte:array of byte;可不可以用string?
我用了好像不行。不知道string有什么缺陷?
Buffer: array[1..1024] of Byte;
begin ADOQryUserData.FieldByName('CurrentApps').GetData(@WStrBuffer);