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;
我左看右看,好像是可行的,怎么为什么只有第一条纪录显示,妈的!!我要砸了电脑,你们不要拦着我!!!
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;
我左看右看,好像是可行的,怎么为什么只有第一条纪录显示,妈的!!我要砸了电脑,你们不要拦着我!!!
oSQL.First
while not oSQL.eof do
begin
....
begin msTemp.clear; TBlobField(oSQL.fieldbyname('nr')).SaveToStream(msTemp);
msTemp.position:=0;
msContent.Position:=msContent.size;
msContent.CopyFrom(msTemp,msTemp.size);
oSQL.next;
end;
msTemp:TMemoryStream;
msContent:TMemoryStream;
begin
msTemp:=TMemoryStream.Create;
msConent:=TMemoryStream.Create;
oSQL.First;
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;
try it again!
不行啊!不知道怎么回事??
procedure TForm1.Button1Click(Sender: TObject);
var s1,s2: TMemoryStream;
s: PChar;
b: integer;
begin
s := AllocMem(14);
s := 'abcedf';
s1 := TMemoryStream.Create ;
s2 := TMemoryStream.Create ;
s1.WriteBuffer(s^,sizeof(s)+2);
s1.Position := 0;
s2.CopyFrom(s1,s1.Size );
s2.Position := s2.Size ;
s1.Position := 0;
s2.CopyFrom(s1,s1.Size);
s := AllocMem(40); s2.Position := 0; s2.ReadBuffer(s^,s2.Size);
edit1.Text := s;
Dispose(s);
s1.Free;
s2.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;
//msTemp.free;
end;