我想将图片保存到数据库,
TBlobField(ADODataSet1.FieldbyName('FJpg')).LoadFromStream(MS);
但在传输过程中,我想将TMemoryStream转换成string,然后再将string 转换成TMemoryStream (需要)
TBlobField(ADODataSet1.FieldbyName('FJpg')).LoadFromStream(MS);
但在传输过程中,我想将TMemoryStream转换成string,然后再将string 转换成TMemoryStream (需要)
试一下 TSTRINGSTREAM
var
tls:TStringList;
begin
Result:='';
tls:=TStringList.Create;
try
tls.LoadFromStream(Stream);
Result:=tls.Text;
finally
tls.Free;
end;
end;procedure TextToStream(const Text:String;var Stream:TMemoryStream);
var
tls:TStringList;
begin
Result:='';
tls:=TStringList.Create;
try
tls.Text:=Text;
tls.SaveToStream(Stream);
finally
tls.Free;
end;
end;
var
tls:TStringList;
begin
tls:=TStringList.Create;
try
tls.Text:=Text;
tls.SaveToStream(Stream);
finally
tls.Free;
end;
end;
用这些方法会失真吧,造成数据不完整,我试过了,保存后图片不正确。
楼主最好还是说清楚想要做什么。
MSComm控件有个Input和Output,他们接受的是OleVariantl类型,可以对其付string,但不能付Tstream,请问有什么办法?
>>MSComm控件有个Input和Output,
MsComm 一般我自己写一个循环,将Output的内容一位位读出来,如果你是十六进制的话
ms:TMemoryStream;
s:string;
.....
//流==>>串
setlength(s,ms.size);
ms.postion:=0;
ms.read(pchar(s)^,ms.size));//串===>>流
ms.postion:=0;
ms.write(pchar(s)^,length(s));
Buf: array of Byte;
begin
SetLength(Buf, Stream.Size);
Stream.Position:=0;
Stream.Read(Buf[0], Length(Buf));
MSComm.Output:=Buf;
end.