51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1075|回复: 10
打印 上一主题 下一主题

Tcl编程“问题”大全

[复制链接]
  • TA的每日心情
    开心
    2016-6-1 15:56
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    跳转到指定楼层
    1#
    发表于 2005-8-10 00:13:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    Tcl编程过程中大家碰到过什么问题呢??说出来看看,也许自己没碰到过,那以后碰到了可以有个解决思路,借鉴借鉴。
    先说说自己碰到的吧。tcl的解释器对代码里注释行的编译有偏差!如#while{$i<10} {  这里尽管都注释掉了,但是编译时会说大括号不匹配,删了后面的半个大括号后,才正常。另外一开始总是会把a和$a搞混!还有tc解释器对中文的兼容性很差等等
    大家在用tcl语言编程过程中肯定碰到过问题吧,都来说说吧出了问题才好:d

    [ Last edited by B2CPC on 2005-8-11 at 11:57 ]
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

  • TA的每日心情
    开心
    2016-6-1 15:56
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    2#
     楼主| 发表于 2005-8-10 00:17:32 | 只看该作者

    借老师的贴子一用:)

    第29贴【2004-6-14】:TCL简介

    TCL是一脚本解释器,具有基本的语言特性,支持整型和字符串变量,支持循环等控制结构;同时它具有灵活的扩展性和跨平台的特性,后者是它最主要的特性。通过TCL脚本可以编写测试用例,通过扩展功能,可以扩展你想要的测试动作。最终目的是将测试的自动化和 灵活性(可扩展性)结合在一起。     

         TCL提供以下接口:
         1、用户接口
         对用户提供语言特性,如循环、条件判断等控制结构,通过它用户可以灵活的书写测试用例;当然只 提供语言特性远远不够,因为业务千差万别,所以用户需要业务接口,从而完成特定的测试任务。 而业务接口,是通过下面的程序员接口实现。
          2、程序员接口
          用户可以编写自己命令,它包括用户层(即名字)和实现层(通过C语言实现),然后用TCL提供的注册 函数登记,以后命令就可灵活的嵌入到脚本中了。

          TCL测试模型分三部分:
          被测试程序(由开发人员编写)----测试人员应搞清楚程序结构和业务功能,指导扩展命令的设计。
          测试代码(由测试设计人员编写)  ---通过程序员接口,提供给脚本扩展命令。
          测试用例(TCL脚本形式,由测试执行人员编写)---通过脚本对扩展命令进一步组合。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    3#
    发表于 2005-8-10 09:49:46 | 只看该作者
    帖子的标题挺吸引人,就是内容……
    我还以为是大全,呵呵
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-6-1 15:56
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    4#
     楼主| 发表于 2005-8-10 20:33:19 | 只看该作者
    呵呵,以后发现“真”的大全再来发:d (现在希望大家都来说说自己碰到的吧)
    先来 几个简介;)
    Tcl编程简介(一)
     

    简介
      Tcl是一种很通用的脚本语言,它几乎在所有的平台上都可以解释运行,功能强大。是tool command language的缩写,发音为 "tickle”, 实际上包含了两个部分:一个语言和一个库。

      首先,Tcl是一种简单的脚本语言,主要使用于发布命令给一 些互交程序如文本编辑器、调试器和shell。它有一个简单的语法 和很强可扩充性,Tcl可以创建新的过程以增强其内建命令的能力。

      其次,Tcl是一个库包,可以被嵌入应用程序,Tcl的库包含了一个分析器、用于执行内建命令的例程和可以使你扩充(定义新的 过程)的库函数。应用程序可以产生Tcl命令并执行,命令可以由用户产生,也可以从用户接口的一个输入中读取(按钮或菜单等)。 但Tcl库收到命令后将它分解并执行内建的命令,经常会产生递归的调用。

      下面简单介绍以下txl的语法规则:

    解释器

      在Tcl的数据结构中的核心是Tcl_Interp.一个解释器包含了一套命令,一组变量和一些用于描述状态的东西。每一个 Tcl命令是 在特定的Tcl_Interp中运行的,基于Tcl的应用程序可以同时拥有几个Tcl_Interp。Tcl_Interp是一个轻量级的结构,可以快速的新建和删除。

    数据类型

      Tcl只支持一种数据结构:字符串(string)。所有的命令,命令的所有的参数,命令的结果,所有的变量都是字符串。请牢记这一点,所有的东西都是字符串。 这是它比较有特点的方面字符串有三种形式:命令(command), 表达式(expresion)和表(list)。

    Basic Command Syntax 基本语法

      Tcl有类似于shell和lisp的语法,当然也有许多的不同。一 条Tcl的命令串包含了一条或多条命令用换行符或分号来隔开,而每一条命令包含了一个域(field)的集合,域使用空白分开的,第一个域是一个命令的名字,其它的是作为参数来传给它。

      例如:

      set a 22 //相当于C中的 a=22 a是一个变量这条命令分为三个域:1: set 2: a 3: 22 set使用于设置变量的值的命令,a、20 作为参数来传给它,a使它要操作的变量名,22是要付给的a值。

      Tcl的命令名可以是内置的命令也可以是用户建的新命令,如果是用户用户建的新命令应用程序中用函数Tcl_CreateCommand来创建。所有的参数作为字符串来传递,命令自己会按其所需来解释的参数的。命令的名字必须被打全,但 Tcl解释器找不到一同名的命令时会用 unknown命令来代替。

      在很多场合下,unknown 会在库目录中搜寻,找到一个的话,会自动生成一个Tcl命令并调用它。unknown经常完成缩略的命令名的执行。但最好不要使用。

    注释

      和shell很象,第一个字母是"#"的Tcl字符串是注释。

    其他细节规则

      Grouping arguments with double-quotes 用双引号来集群参数,目的在于使用有空白的参数。

      例如:

    set a "this string contains whitespace"


      如够一个参数一双引号来开始,该参数会一直到下一个双引号才结束。其中可以有换行符和分号。

      Variable substitution with $ 用美元符进行变量替换说白了就是引用该变量。

      如:


    set a hello
    set b $a // b = "hello" 实际上传给set命令的参数
    //是b,"hello"
    set c a // b = "a"



      Command substitution with brackets 命令子替换(用方括号)

      例如:

    set a [set b "hello"]


      实现执行 set b "hello" 并用其结果来替换源命令 中的方括号部分,产生一条新命令

      set a "hello" //"hello" 为 set b "hello" 的返回值

      最终的结果是b="hello" a="hello"

      当命令的一个子域以方括号开始以方括号结束,表示要进行一个命令子替换。并执行该子命令,用其结果来替换原命令中的方括号部分。方括号中的部分都被视为Tcl命令。

      如下一个复杂一点的例子:


    set a xyz[set b "abc"].[set c "def"]
    //return xyzabcdef



      Backslash substitution 转移符替换

      转移符时间不可打印字符或由它数意义的字符插入进来。这一概念与C语言中的一样。


     Backspace (0x8).
    f Form feed (0xc).

    Newline (0xa).

    Carriage-return (0xd).
    Tab (0x9).
    v Vertical tab (0xb).
    { Left brace (`{" ).
    } Right brace (`}" ).
    [ Open bracket (`[" ).
    ] Close bracket (`]" ).
    $ Dollar sign (`$" ).
    sp Space (` " ): does not terminate argument.
    ; Semicolon: does not terminate command.
    " Double-quote.

    [ Last edited by B2CPC on 2005-8-10 at 20:51 ]
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2016-6-1 15:56
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]测试小兵

    5#
     楼主| 发表于 2005-8-10 20:34:02 | 只看该作者
    Tcl编程简介(二)
     

    列表

      字符串的另一种解释为列表。一个列表是类似于结果的一个字 符串包含了用空白分开的很多域。例如 "Al Sue Anne John" 是 一个有四个元素的例表,在列表中换行父被视为分隔符。例如:

      b c {d e {f g h}} 是一个有三个元素的列表 b 、c 和 {d e {f g h}}。

      Tcl的命令 concat, foreach, lappend, lindex, linsert,list, llength, lrange,lreplace, lsearch, 和 lsort 可以使你对列表操作。

    正则表达式

      Tcl 提供了两个用于正则表达式的命令 regexp 和 regsub。 这里的正则表导师实际上是扩展的正则表达式,与 egrep 相一致。

      支持 ^ $ . + ? > < () | []

    命令结果

      每一条命令有俩个结果:一个退出值和一个字符串。退出值标志着命令是否正确执行,字符串给出附加信息。有效的返回制定议在`tcl.h", 如下:

    TCL_OK


      命令正确执行,字符串给出了命令的返回值。

    TCL_ERROR


      表示有一个错误发生,字符串给出了错误的描述。全局变量 errorInfo 包含了人类可读的错误描述,全局变量errorCode 机器使用的错误信息。

    TCL_RETURN


      表示 return 命令被调用,当前的命令(通常是一个函数)必须立刻返回,字符串包含了返回值。

    TCL_BREAK


      表示break已经被调用,最近的巡环必须立刻返回并跳出。字符串应该是空的。

    TCL_CONTINUE


      表示continue已经被调用,最近的巡环必须立刻返回不跳出。字符串应该是空的。

      Tcl编程者一般需要关心退出值。当Tcl解释器发现错误发生后会立刻停止执行。

    Procedures 函数

      Tcl 允许你通过proc命令来扩充命令(定义新的命令),定义之后可以向其它的内建命令一样使用。

      例如:


    proc pf {str} {
    puts $str
    }
    pf "hello world"
    这里有一个初学者不注意的地方,上述的定义一定要写成那样子。而不能向下面那样写:
    proc pf {str}
    {
    puts $str
    }


      因为proc实际上也只不过是一条命令,是一换行符或分号来结束的,用集群参数来传递函数体。proc的定义如下:


    proc name args tclcommand
    Variables: scalars and arrays


      变量:标量和向量(即数组)

      向量就是数组,而标量是没有下表的变量。

      我们用C来类比:


    int i; // i 是标量
    int j[10]; // j 是向量


      变量不需要定义,使用的时候会自动的被创建。Tcl支持两种

      变量:标量和向量

      举个例子来说明吧,


    set i 100
    set j(0) 10
    set k(1,3) 20


      i是标量,j是向量。

      引用的时候:


    $i
    $j(0)
    $k(1,3)
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2007-5-26 22:23:38 | 只看该作者
    TCL都忘得几乎没有一点印象了sdlkfj7
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2007-5-29 22:24:35 | 只看该作者
    这个东西在公司的测试中不知道能不能用到呢,表示疑问
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2007-7-9 23:32:10 | 只看该作者
    www.tclchina.com  这是唯一TCL”官方网站“了sdlkfj5
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2007-7-18 18:31:35 | 只看该作者
    不错,
    我们就快讲到TCL了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2007-7-19 08:46:14 | 只看该作者
    原帖由 v_v 于 2007-7-9 23:32 发表
    www.tclchina.com  这是唯一TCL”官方网站“了sdlkfj5



    不错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2007-7-23 19:00:32 | 只看该作者
    呵呵 收下了!!谢谢!!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-18 02:31 , Processed in 0.070142 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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