TMemorystream 超级问题 回答正确者 颁发诺贝尔Delphi奖 ( 积分: 100 )

  • 主题发起人 主题发起人 masterli
  • 开始时间 开始时间
M

masterli

Unregistered / Unconfirmed
GUEST, unregistred user!
var
Form1: TForm1;
Treelist : Tstringlist;

///////////////////// 将流保存起来
procedure TForm1.ConstructSymptom;
var
TempQuery : Tadoquery;
Trees : TMemorystream;
begin
try
Treelist := Tstringlist.Create;
TempQuery := Tadoquery.Create(nil);
TempQuery.ConnectionString := 'Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=sa;Initial Catalog=Data2;Data Source=zff';
with TempQuery do
begin
close;
sql.Clear;
sql.Add('select Tblname,tree from TblTree');
open;
end;
while not TempQuery.Eof do
begin
Trees := TMemorystream.Create;
tblobfield(TempQuery.Fields[1]).SaveToStream(Trees);
Treelist.AddObject(TempQuery.Fields[0].AsString,Tobject(@Trees));
TempQuery.Next;
end;
finally
TempQuery.Free;
end;

end;
///////////////////////////// 没办法把流读出来
procedure TForm1.N5Click(Sender: TObject);
var
i : integer;
P : Pointer;
tree : TMemorystream;
begin
for i := 0 to Treelist.Count -1 do
if Treelist.Strings = 'sym' then
begin
P := pointer(Treelist.Objects);
tree := TMemorystream(p^);
tree.Position := 0;

// TMemorystream().Position:=0;
// Treeview2.LoadFromStream(TMemorystream(Treelist.Objects));
showmessage('Find now!');
end;
end;
 
你不是一般人物 颁发诺贝尔Delphi奖
 
var
Form1: TForm1;
Treelist : Tstringlist;

///////////////////// 将流保存起来
procedure TForm1.ConstructSymptom;
var
TempQuery : Tadoquery;
Trees : TMemorystream;
begin
try
Treelist := Tstringlist.Create;
TempQuery := Tadoquery.Create(nil);
TempQuery.ConnectionString := 'Provider=SQLOLEDB.1;Password="";Persist Security Info=True;User ID=sa;Initial Catalog=Data2;Data Source=zff';
with TempQuery do
begin
close;
sql.Clear;
sql.Add('select Tblname,tree from TblTree');
open;
end;
while not TempQuery.Eof do
begin
Trees := TMemorystream.Create;
tblobfield(TempQuery.Fields[1]).SaveToStream(Trees);
Treelist.AddObject(TempQuery.Fields[0].AsString,Tobject(Trees));
TempQuery.Next;
end;
finally
TempQuery.Free;
end;

end;
///////////////////////////// 没办法把流读出来
procedure TForm1.N5Click(Sender: TObject);
var
i : integer;
P : Pointer;
tree : TMemorystream;
begin
for i := 0 to Treelist.Count -1 do
if Treelist.Strings = 'sym' then
begin
tree := TMemorystream(Treelist.Objects);
tree.Position := 0;

// TMemorystream().Position:=0;
// Treeview2.LoadFromStream(TMemorystream(Treelist.Objects));
showmessage('Find now!');
end;
end;

这样试试??
 
楼主实在是对编程的基础不了解,特别是指针,object 也可以看成指针,
- 指针是什么,能被保存吗?
 
典型的“刻舟求剑”。
对象的流化需要序列化才可以的,关于这类问题论坛讨论了很多。
 
while not TempQuery.Eof do
begin
[red] Trees := TMemorystream.Create;[/red] //建这么多流做什么?
tblobfield(TempQuery.Fields[1]).SaveToStream(Trees);
Treelist.AddObject(TempQuery.Fields[0].AsString,Tobject(@Trees));
TempQuery.Next;
end;
 
我想一次性从数据库中读出数据 保存成为流,又不知道应该这样保存,按需读取那些数据。小弟意图非常清晰,希望有高手鼎力相助! 鞠躬~~~~~
 
好好去看看文件操作,你流化后想做什么,最终还得写入到文件,
搞个记录文件,自己定义一下格式,读取自然都很方便。
 
后退
顶部