var msTemp:TMemoryStream; msContent:TMemoryStream; begin msTemp:=TMemoryStream.Create; msConent:=TMemoryStream.Create; while not oSQL.eof do begin TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp); msContent.CopyFrom(msTemp,msTemp.size); oSQL.next; end; msContent.saveToFile('c:\temp.dat'); msContent.free; msTemp.free; end;
blueneo(深深的蓝) :好像不行啊! var msTemp:TMemoryStream; msContent:TMemoryStream; begin msTemp:=TMemoryStream.Create; msConent:=TMemoryStream.Create; while not oSQL.eof do begin TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp); msTemp.position:=0; msContent.CopyFrom(msTemp,msTemp.size); oSQL.next; end; OLE.LoadFrom(msContent); msContent.free; msTemp.free; end; 结果在OLE中显示的只有第一个纪录的内容,其他的都没有,这是为什么?
var msTemp:TMemoryStream; msContent:TMemoryStream; begin msTemp:=TMemoryStream.Create; msConent:=TMemoryStream.Create; while not oSQL.eof do begin TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp); msTemp.position:=0; msContent.Position:=msContent.size;//添加了这句好像还是不行 msContent.CopyFrom(msTemp,msTemp.size); oSQL.next; end; OLE.LoadFrom(msContent); msContent.free; msTemp.free; end; 我左看右看,好像是可行的,怎么还是只有第一条,妈的!!我要砸了电脑,你们不要拦着我!!!
只需一个MemoryStream就OK了。且看:var //msTemp:TMemoryStream; msContent:TMemoryStream; begin //msTemp:=TMemoryStream.Create; msConent:=TMemoryStream.Create; //创建后msContent的postion为0,即指向头 oSQL.First; try while not oSQL.eof do begin //TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp); TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msContent); //处理完这句后,msContent的position指向末尾了,下次只需往下写就可以了。 //msTemp.position:=0; //msContent.Position:=msContent.size; //msContent.CopyFrom(msTemp,msTemp.size); oSQL.next; end; OLE.LoadFrom(msContent); finally msContent.clear; msContent.free; end; end;
m1.copyfrom(m2,m2.size);
m1.SaveToFile(dfile);
msTemp:TMemoryStream;
msContent:TMemoryStream;
begin
msTemp:=TMemoryStream.Create;
msConent:=TMemoryStream.Create; while not oSQL.eof do
begin
TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp);
msContent.CopyFrom(msTemp,msTemp.size);
oSQL.next;
end;
msContent.saveToFile('c:\temp.dat');
msContent.free;
msTemp.free;
end;
var
msTemp:TMemoryStream;
msContent:TMemoryStream;
begin
msTemp:=TMemoryStream.Create;
msConent:=TMemoryStream.Create; while not oSQL.eof do
begin
TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp);
msTemp.position:=0;
msContent.CopyFrom(msTemp,msTemp.size);
oSQL.next;
end;
OLE.LoadFrom(msContent);
msContent.free;
msTemp.free;
end;
结果在OLE中显示的只有第一个纪录的内容,其他的都没有,这是为什么?
msTemp:TMemoryStream;
msContent:TMemoryStream;
begin
msTemp:=TMemoryStream.Create;
msConent:=TMemoryStream.Create; while not oSQL.eof do
begin
TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp);
msTemp.position:=0;
msContent.Position:=msContent.size;//添加了这句好像还是不行
msContent.CopyFrom(msTemp,msTemp.size);
oSQL.next;
end;
OLE.LoadFrom(msContent);
msContent.free;
msTemp.free;
end;
我左看右看,好像是可行的,怎么还是只有第一条,妈的!!我要砸了电脑,你们不要拦着我!!!
//msTemp:TMemoryStream;
msContent:TMemoryStream;
begin
//msTemp:=TMemoryStream.Create;
msConent:=TMemoryStream.Create;
//创建后msContent的postion为0,即指向头 oSQL.First;
try
while not oSQL.eof do
begin
//TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp);
TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msContent);
//处理完这句后,msContent的position指向末尾了,下次只需往下写就可以了。
//msTemp.position:=0;
//msContent.Position:=msContent.size;
//msContent.CopyFrom(msTemp,msTemp.size);
oSQL.next;
end;
OLE.LoadFrom(msContent);
finally
msContent.clear;
msContent.free;
end;
end;
大家帮帮忙,谢谢!!