51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3678|回复: 11
打印 上一主题 下一主题

高手快进!急!向文件中追加一条信息怎么做啊 ?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-12-21 19:35:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我是这么做的,但是,每次都把前一次的信息冲掉了,也就说到最后只有一条信息,我的本意是让他加入每一次循环得到的信息并在前边显示条数!
各位大虾给看看什么原因啊,帮帮忙?
脚本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 编辑 ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-12-21 22:13:52 | 只看该作者
在你的脚本基础上改了一点东东,用红色标出来,这个脚本在我机子上已经通过了,最后的显示结果是:
“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 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
 楼主| 发表于 2006-12-22 17:08:46 | 只看该作者
谢谢你,今天忙了一天,所以现在才来道谢!祝大家圣诞快乐!
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-12-22 21:59:04 | 只看该作者
哈哈!大家共同学习!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
 楼主| 发表于 2006-12-23 15:17:51 | 只看该作者
各位囊不能说一下,要读去一条信息事,出现“#”等开头时,则跳过该条信息。继续向下读,怎么做,拜托!在这先谢谢!
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2015-11-17 09:09
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    6#
    发表于 2006-12-23 17:07:20 | 只看该作者
    使用 file_getline() 获得该条信息,然后使用 if 语句判断其是否以“#”开头(用substr()获得)即可。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
     楼主| 发表于 2006-12-25 10:39:22 | 只看该作者
    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 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2006-12-25 12:04:22 | 只看该作者
    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);# 这是从文件里取的每一行的内容

    }
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    奋斗
    2015-11-17 09:09
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]测试连长

    9#
    发表于 2006-12-25 22:13: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);
    }
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2006-12-28 13:56:36 | 只看该作者
    恩,有收获!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2006-12-28 17:30:03 | 只看该作者
    原帖由 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
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2006-12-28 17:33:35 | 只看该作者
    很好,多点这样的实际例子能学习到很多东西,多谢楼上各位详细的回帖,让其他人也能受益
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-22 06:51 , Processed in 0.077864 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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