with w_main.adoquery_ZXSJ do
begin
close;sql.Clear;
sql.Add('select * from ZXSJ');
open;
myfilename := ExtractFilePath(Application.ExeName) + fieldbyname('appname_zxsj').AsString;//获得文件的完整路径
// TBlobField(FieldByName('filestream_ZXSJ')).SaveToFile(fieldbyname('appname_zxsj').AsString);
myfileStream := TFileStream.Create(myfilename, fmCreate);
showmessage(myfilename);
try //SaveToStream(Stream);
exeBlobStream := ADOQuery_ZXSJ.CreateBlobStream(FieldByName('filestream_ZXSJ'), bmRead);
Count := 0;
try
if Count = 0 then
begin
exeBlobStream.Position := 0;
Count := exeBlobStream.Size;//showmessage(inttostr(count));
end;
Result1 := Count;
if Count > MaxBufSize then BufSize := MaxBufSize else BufSize := Count;
GetMem(Buffer, BufSize);
try
while Count <> 0 do
begin
if Count > BufSize then N := BufSize else N := Count;
exeBlobStream.ReadBuffer(Buffer^, N);
exeBlobStream.WriteBuffer(Buffer^, N);
Dec(Count, N);
end;
finally
FreeMem(Buffer, BufSize);
end;
finally
exeBlobStream.Free;
end;
finally
myfileStream.Free;
end;
end;
begin
close;sql.Clear;
sql.Add('select * from ZXSJ');
open;
myfilename := ExtractFilePath(Application.ExeName) + fieldbyname('appname_zxsj').AsString;//获得文件的完整路径
// TBlobField(FieldByName('filestream_ZXSJ')).SaveToFile(fieldbyname('appname_zxsj').AsString);
myfileStream := TFileStream.Create(myfilename, fmCreate);
showmessage(myfilename);
try //SaveToStream(Stream);
exeBlobStream := ADOQuery_ZXSJ.CreateBlobStream(FieldByName('filestream_ZXSJ'), bmRead);
Count := 0;
try
if Count = 0 then
begin
exeBlobStream.Position := 0;
Count := exeBlobStream.Size;//showmessage(inttostr(count));
end;
Result1 := Count;
if Count > MaxBufSize then BufSize := MaxBufSize else BufSize := Count;
GetMem(Buffer, BufSize);
try
while Count <> 0 do
begin
if Count > BufSize then N := BufSize else N := Count;
exeBlobStream.ReadBuffer(Buffer^, N);
exeBlobStream.WriteBuffer(Buffer^, N);
Dec(Count, N);
end;
finally
FreeMem(Buffer, BufSize);
end;
finally
exeBlobStream.Free;
end;
finally
myfileStream.Free;
end;
end;
解决方案 »
- delphi显示长度问题
- com口接收数据时出现了不正常现象。高手们进来看看。
- DLLEntryPoint 方法在哪个单无,怎样用?
- 有什么方法可以令Dbgrid内的列布满整个Dbgrid?
- 求解并发问题
- dephi7和sql2000使用数据模块的问题
- tikkypeng(一两狂死郎之天衣有缝)进来!!!!在不在啊?大家都看一看好不好啊?
- 急,DLL中含有多个窗口,主窗体怎样调用其它窗体呢?
- 关于图像(BMP)的连接?
- 使'panel控件'上的'五个Image控件'在for...do...语句中显示图片
- 难道我变傻了?----连18关都过不了(一光学小游戏).郁闷ing.....
- 请给初学计算机(主攻写程序)的指引一条稳健的学习之路!
是取不到图的。
begin
close;sql.Clear;
sql.Add('select * from ZXSJ');
open;
TBlobField(FieldByName('filestream_ZXSJ')).SaveToFile(fieldbyname('appname_zxsj').AsString); myini.WriteString('system','version',g_version_sql);//将新版本号写入ini MessageBox(Handle,pchar('软件升级完成!'),'信息',MB_ICONINFORMATION);
winexec(pchar(ExtractFilePath(Application.ExeName)+i_exename),SW_SHOWNORMAL);
application.ShowMainForm:=false;
application.Terminate;
end;
但这样是可以的,只是把savetofile函数改成了他里面的具体代码而已??????????????
begin
if Count > BufSize then N := BufSize else N := Count;
exeBlobStream.ReadBuffer(Buffer^, N);
exeBlobStream.WriteBuffer(Buffer^, N);//这里错了
Dec(Count, N);
end; exeBlobStream.WriteBuffer(Buffer^, N);//这里错了
改成MyFileBlobStream.WriteBuffer(Buffer^, N);就可以了