系统winxp delphi6.0
var
myjpeg1:TJPEGImage;
MS:TMemor yStream;
begin
//从ftp调取图片
myjpeg1:=TJPEGImage.Create;
MS:=TMemoryStream.Create; //使用流
idftp1.Connect;
idftp1.Get(tpdir+'\'+picturename+'.jpg',MS);
idftp1.Disconnect;
Ms.SaveToFile('C:\'+picturename+'.jpg');
myjpeg1.LoadFromFile('C:\'+picturename+'.jpg');
imageX.picture.Assign(myjpeg1);
myjpeg1.Free;
Ms.Free;
end;
//以上可以运行正常,但是我是想直接从流中读出,而不是从文件读出
将红色部分改成
myjpeg1.LoadFromStream(Ms);
则运行出错,编译可以通过,不解?
加上MS.position:= 0;
--------------------------------------------------------------------------------------
谢谢楼上各位,忘记过来回帖了,不好意思!
现在不用https了,但是还有个问题,就是post返回值中文乱码的问题。
我用的delphi2010,使用idhttp post得到的返回值是utf8编码格式的字符串,里面的中文是乱码,使用utf8toString,httpDecode等解码函数都试过了,但没解决问题,不知道朋友们遇见过这样的问题吗?
乱码问题也解决了
关键代码就在这三行
RsltStrm:=TStringStream.Create('',TEncoding.UTF8);
IdHTTPClient.Post('',tmpStrList,RsltStrm);
tmpStrList.Text:=RsltStrm.DataString;
多谢各位朋友!!!
----------------------------------------------------------------------------------------
但如果用update的话(如下代码);
procedure TfrmStudentInfoManage.Label10Click(Sender: TObject);
var
Ms:TmemoryStream;
jpg:Tjpegimage;
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
ms:=TmemoryStream.Create;
Jpg:=TJpegImage.Create;
Jpg.Assign(Image1.Picture.Graphic);
Jpg.SaveToStream(Ms) ;
Ms.Position :=0;
adoquery1.Close;
adoquery1.SQL.Clear;
ADOQuery1.SQL.Add('update StudentInfoData set 学号=:学号,照片:=照片'); //保存图片到数据库
adoquery1.Parameters.ParamByName('学号').Value:=DBEdit1.Text;
adoQuery1.Parameters.ParamByName('照片').LoadFromStream(ms,ftBlob);
adoquery1.ExecSQL;
Ms.Free ;
jpg.free;
end
else
begin
Application.MessageBox('保存出错或文件名无效!','出错',64);
exit;
end;
end;
-------------------------------------------------------------------------------------------------------
fastreport直接打印
fastreport如何直接打印符合条件的报表?
Close;
sql.Clear;
SQL.Add('select top 1 * from s f_cbzjmx where id='+inttostr(dj_id));
open;
//直接打印报表
frxReport1.LoadFromFile('sf_cbzjmx.fr3');
frxReport1.PrepareReport();
frxReport1.PrintOptions.ShowDialog:=false;
frxReport1.Print;
想不通过预览,直接打印select出来的结果。但以上语句实现不了。
如果预览,用如下语句是可以的:
frxReport1.LoadFromFile('sf_cbzjmx.fr3');
frxReport1.ShowReport;
多谢你的提醒。按照你的思路,把问题解决了。谢谢。
你 TfrxReport 里面还没导入数据集呢,导入.fr3之前 Clear 一下 TfrxReport,然后把已经 Open 的数据集 TADOQuery 赋给一个 TfrxDBDataset , TfrxDBDataset 赋给 TfrxReport 之前清空 TfrxReport 里面已经存在的数据集,然后打印就可以了...