怎样用代码得到memo类型字段的值?(50分)

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

mmww

Unregistered / Unconfirmed
GUEST, unregistred user!
如果一个表的memo类型字段的值是多行文本,我想知道怎样通过代码把它的值存在字符串
数组中或Tstringlist数据类型的变量中?

但不能靠读取dbmemo或memo控件的lines属性.

谢谢!
 
为什么不想用memo控件的lines属性.
 
因为我想把对表的处理封装到一个函数里,而这个函数要在多个地方被重复调用所以
不能和界面的控件捆在一起,我实验了一下,memo类型字段可以读到variant变量中
但不能直接存到字符串数组或Tstringlist对象变量中,可怎样把variant变量的多行
文本转换到字符串数组或Tstringlist对象变量中 ? ? ?

 
如果在代码中动态建立Tmemo控件,也不能把memo字段值存入Tmemo.lines中,
各位大侠没处理过类似问题吗?
既然Tdbmemo控件能读取memo字段的值,那说明用代码应该可以实现这个目的啊?
 
不行啊,编译错误!
 
该:
procedure TForm1.convertit;
 
试试:
procedure TForm1.convertit;
var
temp:string;
i,x: Integer;
s:array [0..10] of string;
begin
temp:=table1.fields[3].AsVariant;//memo字段
i:=0;
while pos(#13,temp)>0 do
begin
s:=copy(temp,1,pos(#13,temp)-1);
x:=pos(#13,temp)+1;
temp:=copy(temp,x,length(temp)-x+1);
i:=i+1;
end;
s:=temp;
end;

 
不行啊有#$A的乱字符,
 
我试过没问题,你真是memo字段吗?实在不行把你的代码寄给我试试。
linsb3031@0451.com
 
一般说用AsString就可以取得BLOB字段的内容。你的代码可以写成这样:
MyStringList.Text:=MyTable.FieldByName('MyBlobField').AsString;

当然你也可以写成这样:
var
MyStream: TStream;
begin
MyStream:=MyTable.CreateBlobStream(MyTable.FieldByName('MyBlobField'),bmRead);
try
MyStringList.LoadFromStream(MyStream);
finally
MyStream.Free;
end;
end;
 
后退
顶部