狂郁闷的问题,请指点!!!!!!(100分)

  • 主题发起人 主题发起人 zhouaiping
  • 开始时间 开始时间
Z

zhouaiping

Unregistered / Unconfirmed
GUEST, unregistred user!
[:(!]我定义了一个TDATA类来读文本,如果文本为一行则TData.getSBcount返回为0,可我现在有5行时在客户那里也返回为0,而在新搞的2000上面没问题,在我自已上面也没问题,我用的是同一个文本,我怎么想也找不出问题。哪个大侠能征服!![:D]

var i,lscount:integer;
SBlist:tlist;
SBdata:TData;
begin
if not FileExists(str+'lsdatafile.txt') then //检查文件是否存在
begin
messagebox(handle,'提示:','请重新扫描!',MB_ok+MB_ICONINFORMATION);
exit;
end else
begin
SBdata:=Tdata.Create;
SBdata.SETDATA(str+'lsdatafile.txt');
lscount:=SBdata.getSBcount;//检查文件是否有数据(就是返回的行数)
if lscount<=0 then
begin
Application.MessageBox('接收为空,请重新添写。','提示:',MB_OK+MB_ICONINFORMATION);
SBdata.Free;
exit;
end;
////////////////////////////////////////////////////////////
sbdataList:tlist

constructor TData.Create;
begin
inherited;
SbDataList:=Tlist.create();
end;

procedure TData.SETDATA(filepath: string);
var sl,sltmp:tstringlist;
i,index:integer;
StrRowTmp,strtmp:string;
PD:PSbDataRec;
begin

sl:=Tstringlist.Create();
sltmp:=Tstringlist.Create();
try
sl.loadfromfile(filepath);
for i:=0 to ssl.Count-1 do
begin
//。。。。。。。。。
sbdataList.Add(pd);
end;
finally
sl.free;
sltmp.Free;
end;

function TData.getSBcount: integer;
begin
result:=SbDataList.Count;
end;
 
[:D]看不出有什么问题。这就是编译后的代码吗,代码语法有问题不知道你是怎么编译通过的[:D]
 
我这是剪下来的,同仁们帮忙看一下啊!!顶一下也好啊!!顶了也有分送的!!
 
看不懂,我是菜鸟!
 
[:D]首先你要确定sl.loadfromfile(filepath)文件是否被装载进来了,再者,关键的你省略的那段代码要看一看,估计问题最可能是出在这里。
 
客户是什么操作系统?
 
有可能是操作系统的中/英文版本引起的.
 
你是如何确定是同一文本??最好在显示行数时再将文本内容显示出来看一下,是否肯定如此
 
sbdataList.Add(pd);中PD:PSbDataRec;
PSbDataRec是一个什么类型的数据?
 
关键是 sl:=Tstringlist.Create();
sltmp:=Tstringlist.Create();
try
sl.loadfromfile(filepath);

我认为运行后返回的是0行(文件是被装载进来),如果文件没进来,那么我
(if not FileExists(str+'lsdatafile.txt') then //检查文件是否存在)
这个能叛断到,现在报错的是
Application.MessageBox('接收为空,请重新添写。','提示:',MB_OK+MB_ICONINFORMATION);
 
我看出的问题是:
SBdata.SETDATA(str+'lsdatafile.txt');
lscount:=SBdata.getSBcount;//检查文件是否有数据(就是返回的行数)
有可能SETDATA还没有执行完,你就调用getSBcount了,应该和机器的速度有关系
你在sl.loadfromfile(filepath);
下面加一个延时再试试,如果有问题,那我说的就是对的
 
SBdata.SETDATA(str+'lsdatafile.txt'); 还没结束就会执行lscount:=SBdata.getSBcount??
不可能的吧
 
你还是试试吧
 
我已经测试,我看出的问题是错的
 
我想也不可能这样,但你真的很真诚!!谢谢你,一定给分!!!!!
 
for i:=0 to ssl.Count-1 do
ssl是什么?
 
程序中是sl,不是这个有问题
 
会不会是语言集,字体的问题?
 
我用UltraEdit看过了,文本没问题,换行的asc码存在的
 
sl有没有取到记录
你省略的那部分做了什么?
如果单看代码是没有看出问题来
 
后退
顶部