菜菜求助:百思不得其解的问题

Tai0105 2008-10-02 02:08:26
有5个.act文件,文件名为'Act\bbsMessageList('+inttostr(1到5)+').act',从1开始到5,读入到FileString,然后判断是否包含'/photos/forum/',若包含,则用/photos/forum/提取出图片的地址,奇怪的是:在文件1到5中,只有3和5包含地址,而程序运行3文件都是正确的,而到了4时,if AnsiContainsText(FileStr,'/photos/forum/') then应该为假而跳转到文件5的,但事实上该语句却为真,而读入并被提取地址的却是文件3;而到文件5时,链表到内容并未被清空,我尝试FREE或DESTROY后也是同样的结果:文件3的内容被写入到文件4、5了,而文件4本不应该被保存的。
代码只对一个文件例如for i:=3 to 3 do 或for i:=4 to 4 do时,结果是正确的。
本来是想学习多线程编程,但多线程下做的有问题所以这样测试的,却出来这个问题,可能是有些小问题我没注意到,就如满世界找钥匙而钥匙在兜里一样^_^,但我实在看不出来,也用我所知道的方法测试修改了,还是没搞定。

最困惑的是if AnsiContainsText对i:=4时判断错误,以及for i:=1 to 5没进入下一循环时链表未清空。
请各位帮我看看,非常感谢!
一下是代码:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
FileName:String; //文件名
FileStr:String; //读入文件后的字符串
Url:String; //提取出来的URL
UrlList:TStringList; //保存Url到链表
begin
UrlList:=TStringList.Create;
for i:=1 to 5 do //文件1到5
begin
FileName:='Act\bbsMessageList('+inttostr(i)+').act';
FileStr:=TxtToString(FileName); //读入文件i
if AnsiContainsText(FileStr,'/photos/forum/') then //如果文件中存在url标记字符串'/photos/forum/'(感觉这里问题最大,想不通^_^)
begin
//MessageBox(handle,Pchar(inttostr(i)),'',mb_OK+MB_ICONINFORMATION);
while AnsiContainsText(FileStr,'/photos/forum/') do //这个循环工作真确,作用是提取一个文件中所有URL
begin
Url:=GetImageUrl('/photos/forum/',FileStr,14,47); //提取url
FileStr:=DelSign('/photos/forum/',FileStr); //去除当前标记
UrlList.Add(Url); //加入链表
end;
if UrlList.Count>1 then //链表中有记录
UrlList.SaveToFile('UrlList\'+inttostr(i)+'.txt'); //保存到文件
UrlList.Clear;
end
else
UrlList.Clear;
UrlList.Clear;
end;
//UrlList.SaveToFile('UrlList\'+inttostr(1)+'.txt');
//memo1.Lines.Add(inttostr(UrlList.Count));
UrlList.Destroy;
end;
...全文
77 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
freetop_gl 2008-10-06
  • 打赏
  • 举报
回复
看情况,很象内存操作的错误
检查一下TxtToString 这个函数
Tai0105 2008-10-02
  • 打赏
  • 举报
回复
惨了,我的分可不够给,汗,非常抱歉!

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧