X
xfwing
Unregistered / Unconfirmed
GUEST, unregistred user!
我想利用Msmq发送blob型的数据(存的是jpg格式的照片,每张大约2k多)
可是却发现发送的数据变小了.
procedure TForm1.Button9Click(Sender: TObject);
var
vZp:variant;
strZp:string;
olevZplevariant;
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select bh,zp from g_zp where bh=741');
adoquery1.Open;
//从oracle 的long raw 类型的字段中取出.jpg型的照片数据
strZp:=ADOQuery1.FieldByName('zp').asstring;
vZp:=ADOQuery1.FieldByName('zp').value;
olevZp:=ADOQuery1.FieldByName('zp').value;
//同一记录显示取出的照片数据的大小却不同//
//运行显示为2672字节,该字节为该照片的实际长度
showmessage('照片长度:'+inttostr(length(strZp)));
//运行显示为2672字节,该字节为该照片的实际长度
showmessage('照片长度:'+inttostr(length(strZp)));
//运行显示为2493字节,比实际长度少
showmessage('照片长度:'+inttostr(length(strZp)));
msmqqueueinfo1.PathName:='./MYqueue';
MSMQQueueInfo1.Label_:='Myqueue';
msmqqueue1.ConnectTo(msmqqueueinfo1.Open(2,0));
//将照片数据送如消息队列
MSMQMessage1.Label_:='l_zp';
MSMQMessage1.Body:=strzp;
//MSMQMessage对象的bodyLength既不是2672也不是2493,且比两者都大
showmessage(inttostr(Msmqmessage1.BodyLength));
//用length()函数得到2493
showmessage('body'+inttostr(length(msmqmessage1.body)));;
MSMQMessage1.Send(msmqqueue1.DefaultInterface);
msmqqueue1.Close;
end;
我将取得的数据写入文件后证实2672字节的可正确显示照片.
各位大侠看看是MSMQ的问题,(消息的大小有限制ms的文档好象说可为4M)
还是Delphi的olevariant类型有什么特殊用法.
(MSMQmessage.body为olevariant类型,即使将其他类型的值赋给它仍会转换
而产生错误),难道blob类型的数据无法利用MSMQ发送吗??
请各位多多指教.
可是却发现发送的数据变小了.
procedure TForm1.Button9Click(Sender: TObject);
var
vZp:variant;
strZp:string;
olevZplevariant;
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select bh,zp from g_zp where bh=741');
adoquery1.Open;
//从oracle 的long raw 类型的字段中取出.jpg型的照片数据
strZp:=ADOQuery1.FieldByName('zp').asstring;
vZp:=ADOQuery1.FieldByName('zp').value;
olevZp:=ADOQuery1.FieldByName('zp').value;
//同一记录显示取出的照片数据的大小却不同//
//运行显示为2672字节,该字节为该照片的实际长度
showmessage('照片长度:'+inttostr(length(strZp)));
//运行显示为2672字节,该字节为该照片的实际长度
showmessage('照片长度:'+inttostr(length(strZp)));
//运行显示为2493字节,比实际长度少
showmessage('照片长度:'+inttostr(length(strZp)));
msmqqueueinfo1.PathName:='./MYqueue';
MSMQQueueInfo1.Label_:='Myqueue';
msmqqueue1.ConnectTo(msmqqueueinfo1.Open(2,0));
//将照片数据送如消息队列
MSMQMessage1.Label_:='l_zp';
MSMQMessage1.Body:=strzp;
//MSMQMessage对象的bodyLength既不是2672也不是2493,且比两者都大
showmessage(inttostr(Msmqmessage1.BodyLength));
//用length()函数得到2493
showmessage('body'+inttostr(length(msmqmessage1.body)));;
MSMQMessage1.Send(msmqqueue1.DefaultInterface);
msmqqueue1.Close;
end;
我将取得的数据写入文件后证实2672字节的可正确显示照片.
各位大侠看看是MSMQ的问题,(消息的大小有限制ms的文档好象说可为4M)
还是Delphi的olevariant类型有什么特殊用法.
(MSMQmessage.body为olevariant类型,即使将其他类型的值赋给它仍会转换
而产生错误),难道blob类型的数据无法利用MSMQ发送吗??
请各位多多指教.