delphi中使用TWebBrowser如何直接读取流中的数据

delphi中使用TWebBrowser如何直接读取流中的数据,第1张

5年了,这个贴还没人回答吗?我也同样关注这个问题,虽然我不知道它怎么直接支持流数据,但我知道它可以支持字符串。当然,如果能把流转换成字符串的话也是一样的,不过要支持字符串也不是这么简单,需要通过OLE方式来附值,有点小麻烦,类似的做法大致是这样通过声明一个可变类型,然后用IHTMLDOCUMENT接口将twebbrowser的文档内容转换后附值给这个OLE变量,然后指定变量的内容为内存流中的字符串(中间可能要通过进行强制转换)。

第二种方法最简单,找到一个叫EmbeddedWB的控件,主控件中有个HTML属性,它是一个字符串列表属性,可以直接将流中的字符串复制过来就行。

没指望这个答案能被采纳(毕竟此贴都这么多年,贴主都不知道去哪了),但以后如果有人有类似的疑问搜到此贴,也能给他一个参考。

老弟,逆向过程就像下面这么简单:

procedure TForm1.Button2Click(Sender: TObject)

var

FileStream1,FileStream2: TFileStream

begin

FileStream1 := TFileStream.Create('C:\workdir\B.ee', fmOpenRead)

FileStream2 := TFileStream.Create('C:\workdir\B.zip', fmCreate)

FileStream2.CopyFrom(FileStream1,FileStream1.Size)

FileStream1.Free

FileStream2.Free

end

试试,B.zip完全可以用Winrar解开,与原来的A.zip完全一致!

附件和图片都一样的。都是2进制流。读取出来的时候保存格式正确就行

procedure TForm1.LoadPictureClick(Sender: TObject) // 上传图片

begin

OpenPictureDialog1.Title := '打开图片'

if OpenPictureDialog1.Execute then

begin

Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName)

end

endprocedure TForm1.saveClick(Sender: TObject) //保存

var

Stream:TMemoryStream

begin

try

Stream := TMemoryStream.Create// 创建内存流

Image1.Picture.Graphic.SaveToStream(Stream) // 将图片保存到内存流中 //Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName)(另一种方法)

adoquery1.Close

adoquery1.SQL.Clear

adoQuery1.SQL.Add('Insert into test3 values (:id,:photo)')

ADOQuery1.Parameters.ParamByName('id').Value := editId.Text

adoQuery1.Parameters.ParamByName('photo').LoadFromStream(Stream,ftBlob)// 读取保存的内存图

adoquery1.ExecSQL

finally

Stream.Free// 释放内存流

end

endprocedure TForm1.ReadClick(Sender: TObject) // 读取图片

var

Stream:TMemoryStream

Jpg:TjpegImage

begin

ADOQuery1.Close

ADOQuery1.SQL.Text:='SELECT * FROM test3 where id =' + editId.Text // 查询图片

ADOQuery1.Open

if not ADOQuery1.FieldByName('photo').IsNull then

begin

Stream:=TMemoryStream.Create

Jpg:=TjpegImage.Create

TBlobField(ADOQuery1.FieldByName('photo')).SaveToStream(Stream) // 显示的转换为BlobField并保存到内存流

Stream.Position :=0

jpg.LoadFromStream(Stream) // 加载图片

image2.Picture.Assign(Jpg)

end

else

begin

image2.Picture :=nil

end Stream.FreeJpg.Freeend


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11743869.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-18
下一篇 2023-05-18

发表评论

登录后才能评论

评论列表(0条)

保存