51Testing软件测试论坛

标题: 高手快进!急!向文件中追加一条信息怎么做啊 ? [打印本页]

作者: wonew1228    时间: 2006-12-21 19:35
标题: 高手快进!急!向文件中追加一条信息怎么做啊 ?
我是这么做的,但是,每次都把前一次的信息冲掉了,也就说到最后只有一条信息,我的本意是让他加入每一次循环得到的信息并在前边显示条数!
各位大虾给看看什么原因啊,帮帮忙?
脚本1:
myFile = "d:\\xyb\\sedsbg.txt";
shiji=aaaaaa;
result="记录"&shiji&"在添加以前就在数据库中存在,本次添加失败";
for(i=0;i<3;i++)
{

call "C:\\Documents and Settings\\Administrator\\My Documents\\result"();
result(myFile,i,result);
call_close "C:\\Documents and Settings\\Administrator\\My Documents\\result"();
}



public function result(myFile,line,result)
{
        static rc;
        rc = file_open(myFile, FO_MODE_WRITE);
        if(rc == E_OK)
                {
                           #file_printf(myFile, "%s\r\n", result);
                        file_printf(myFile, "%s "&line&"\n", result&"\n");
                           file_save
                        file_close(myFile);
                }
        else
                {   
                     report_msg("file_open failed with error " & rc);
                }
        }

[ 本帖最后由 wonew1228 于 2006-12-21 19:58 编辑 ]
作者: shiwomyw    时间: 2006-12-21 22:13
在你的脚本基础上改了一点东东,用红色标出来,这个脚本在我机子上已经通过了,最后的显示结果是:
“0记录aaaaaa在添加以前就在数据库中存在,本次添加失败
1记录aaaaaa在添加以前就在数据库中存在,本次添加失败
2记录aaaaaa在添加以前就在数据库中存在,本次添加失败”
不知道是不是你想要的结果。
###主脚本#####
myFile = "d:\\xyb\\sedsbg.txt";
shiji="aaaaaa";
result="记录"&shiji&"在添加以前就在数据库中存在,本次添加失败";
report_msg(result);
for(i=0;i<3;i++)
{

call "C:\\Documents and Settings\\Administrator\\My Documents\\result"();
result(myFile,i,result);
call_close "C:\\Documents and Settings\\Administrator\\My Documents\\result"();
}


####被调用脚本#####
public function result(myFile,line,result)
{
        static rc;
        rc = file_open(myFile, FO_MODE_APPEND);
        if(rc == E_OK)
                {
                           #file_printf(myFile, "%s\r\n", result);
         #pause(result);
         #file_printf(myFile, "%s "&line&"\n", "\n"&line & result);
                     file_printf(myFile,line&"%s\r\n", result);
                           #file_save
                        file_close(myFile);
                }
        else
                {   
                     report_msg("file_open failed with error " & rc);
                }
        }

[ 本帖最后由 shiwomyw 于 2006-12-21 22:19 编辑 ]
作者: wonew1228    时间: 2006-12-22 17:08
谢谢你,今天忙了一天,所以现在才来道谢!祝大家圣诞快乐!
作者: shiwomyw    时间: 2006-12-22 21:59
哈哈!大家共同学习!
作者: wonew1228    时间: 2006-12-23 15:17
各位囊不能说一下,要读去一条信息事,出现“#”等开头时,则跳过该条信息。继续向下读,怎么做,拜托!在这先谢谢!
作者: gp_jl    时间: 2006-12-23 17:07
使用 file_getline() 获得该条信息,然后使用 if 语句判断其是否以“#”开头(用substr()获得)即可。
作者: wonew1228    时间: 2006-12-25 10:39
filename ="d:\\xxxx\\ssss.txt";
line=2;                   
file_open( filename, FO_MODE_READ );
shuju = file_getline ( filename, line );        
report_msg(shuju);
我用这样写的,report_msg(shuju)后得到的数据为0;不管 把 line 值 改为多少都是0;怎么会事,高手指点一下!谢谢

[ 本帖最后由 wonew1228 于 2006-12-25 13:36 编辑 ]
作者: piao_604    时间: 2006-12-25 12:04
lz没有理解file_getline (  )函数的意思,可以参见help下的 tsl online reference里的函数解释
file_getline ( file_name, out_line );
file_name        The name of an open file.
out_line        The output variable that stores the line that is read.
在你的脚本里,shuju是函数file_getline的返回值,是0没错,表示该函数执行成功
修改的脚本如下:

filename ="d:\\xyb\\sedsbg.txt";               
file_open( filename, FO_MODE_READ );
for(i=0;i<2;i++)   #这里是文件内容的行数,这里是假设2行

{
   shuju = file_getline ( filename, line );         
    report_msg(shuju);#这是函数的返回值
    report_msg(line);# 这是从文件里取的每一行的内容

}
作者: gp_jl    时间: 2006-12-25 22:13
借用你的Result函数。

myFirstFile = "C:\\sedsbg.txt";
mySecFile = "C:\\sedsbg1.txt";
static rc,i;
i=0;
rc = file_open(myFirstFile, FO_MODE_READ);
file_open( mySecFile,FO_MODE_WRITE);
if(rc == E_OK){
#       file_printf(myFile,line&"%s\r\n", result);

#判断每条信息是否以“#”开头,并将非"#"开头的信息写入文件 mySecFile 中
                while(file_getline(myFirstFile,line)==E_OK){
                        i++;
                        pause(line);
                        if(substr(line,1,1)=="#"){                                #判断该行信息是否以“#”开头
                                continue;
                        }
                         file_printf( mySecFile,toupper(line)&"\r\n",i);#向文件 mySecFile中写入信息
                }
       file_close(myFirstFile);
           file_close(mySecFile);
}
else{   
                report_msg("file_open failed with error " & rc);
}
作者: withhold    时间: 2006-12-28 13:56
恩,有收获!
作者: dionysus    时间: 2006-12-28 17:30
原帖由 gp_jl 于 2006-12-25 22:13 发表
借用你的Result函数。

myFirstFile = "C:\\sedsbg.txt";
mySecFile = "C:\\sedsbg1.txt";
static rc,i;
i=0;
rc = file_open(myFirstFile, FO_MODE_READ);
file_open( mySecFile,F ...

文件操作这块的函数一直不是很明白,这个帖子收藏了sdlkfj3
作者: kolecat    时间: 2006-12-28 17:33
很好,多点这样的实际例子能学习到很多东西,多谢楼上各位详细的回帖,让其他人也能受益




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2