起步软件技术论坛-X3

 找回密码
 立即注册
搜索
查看: 221|回复: 12

【结贴】工作记录内容限制40报错**

[复制链接]
发表于 2008-9-2 08:28:47 | 显示全部楼层 |阅读模式
我的代码在工作记录的业务信息中代码如下:
procedure TWORKRECORDINFO.DataSetBizTaskDataBeforePost(DataSet: TDataSet);
var
s:string;
begin
s:=DataSetBizTaskData.FieldByName('fpostdetail').ToString;
s:=Business.System.SysUtils.Trim(s);
if (Business.System.SysUtils.StrLen(s)<=80) then
begin
Business.Forms.Dialogs.ShowMessage('内容字数少于40,请详细填写!');
Business.System.SysUtils.Abort;
end;
  Inherited;

end;
报错为:
Access violation at address 00000000. Read of address 00000000
回复

使用道具 举报

发表于 2008-9-2 08:38:25 | 显示全部楼层
s:=DataSetBizTaskData.FieldByName('fpostdetail').ToString;
请修改为
s:=DataSetBizTaskData.FieldByName('fpostdetail').AsString;
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 08:46:32 | 显示全部楼层
内容是二进制流类型,怎么取得字符串?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 10:26:00 | 显示全部楼层
我取表格文档中的单元格内容,报错代码Business.Model.TSheetDoc(DocView.Doc).Cells[3,6].Text,
Business.Model.TSheetDoc(DocView.Doc).Cells[3,6].value都不行,应该怎么写?
回复 支持 反对

使用道具 举报

发表于 2008-9-2 10:55:44 | 显示全部楼层
二进制流就要类似于这样子来访问了。
TBlobField(DataSetBizTaskData.FieldByName('fpostdetail')).SaveToStream(lStream);
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 11:02:15 | 显示全部楼层
不能通过读取单元格的方式读工作内容吗?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 11:21:04 | 显示全部楼层
按你说的可以详细一点吗?
回复 支持 反对

使用道具 举报

发表于 2008-9-2 11:34:06 | 显示全部楼层
lstream : TStream;
  i : Integer;
begin
  lstream := TMemoryStream.Create;
  TBlobField(DataSetBizTaskData.FieldByName('fpostdetail')).SaveToStream(lStream);
  i := lStream.Size;
  lstream.Free;

类似于这样子吧。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2008-9-2 11:52:00 | 显示全部楼层
这样读出来的是二进制流的大小,而不是内容的字符串长度
回复 支持 反对

使用道具 举报

发表于 2008-9-2 12:06:51 | 显示全部楼层
是这样的,你可以自己填写40个字符进去,然后看size(也可以按1楼的做法)来判断。但是这样子判断出来的结果不一定很准备,因为表现为rtf格式后它会增加一些自己的格式进去。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Justep Inc.

GMT+8, 2025-7-21 09:26 , Processed in 0.035802 second(s), 15 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表