51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

[原创] lr_eval_string函数怎么执行失败

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-8-19 17:25:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
求助啊!
我的函数中写了如下一段
        char *a="{soutceID}";
        char *b="{timeStamp}";
        char *c="{pw}";
        char *d="{phoneNum}";
        lr_log_message("%s,%s,%s,%s",lr_eval_string(a),lr_eval_string(b),lr_eval_string(c),lr_eval_string(d));//打印四个参数;

调试时总是报错如下:
Action.c (45): illegal statement termination
Action.c (45): skipping `char'
Action.c (45): undeclared identifier `d'
Action.c (45): type error: pointer expected
Action.c (45): operands of = have illegal types `int' and `pointer to char'

4个参数化是file类型,用的是lr自带的类型
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2010-8-19 17:27:40 | 只看该作者
我要是把如上代码注释掉,只执行下面的是ok的,也就是参数化的内容也都被取到了,为啥就是不能赋值呢????
        web_url("request.do",
                "URL=http://10.1.250.188:8889/ssogw/request.do?woid={soutceID},{timeStamp},{phoneNum},9363534ae6377ae463c07805b2e008df&returnurl=http://10.1.250.188:6880/smsmail_iphone/ssoMailboxService.html&param=key1:123,key2:234,key3:345",
                "Resource=0",
                "RecContentType=text/html",
                "Referer=",
                "Snapshot=t1.inf",
                "Mode=HTML",
                LAST);
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-8-19 20:40:25 | 只看该作者
为什么不直接这样写
lr_log_message("%s,%s,%s,%s",lr_eval_string("{soutceID}"),lr_eval_string("{timeStamp}"),lr_eval_string("{pw}"),lr_eval_string("{phoneNum}"));
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2010-8-20 09:43:33 | 只看该作者
指针问题...
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2010-8-20 13:05:21 | 只看该作者
lr_eval_string()是LoadRunner自身的函数,它是把取参数的值并转换为字符串,所以它只能接收参数不能直接接收变量。
例如:lr_eval_string("{参数名}");
回复 支持 反对

使用道具 举报

该用户从未签到

6#
 楼主| 发表于 2010-8-20 14:43:32 | 只看该作者
太谢谢了,你的方法是能把参数显示了。
但是使用lr_eval_string函数只是第一步,但是我脚本的是需要把4个参数取出来后,拼接成一个参数传给自己写的MD5加密函数的,所以必须要能赋值,还望继续指导下。
我再百度下为啥指针错了呢?
回复 支持 反对

使用道具 举报

该用户从未签到

7#
 楼主| 发表于 2010-8-20 14:57:30 | 只看该作者

回复 5# 的帖子

明白你说的意思了,那我用3#变通下就可以了,但是为啥接收到参数后的值没法赋值给变量呢?
回复 支持 反对

使用道具 举报

该用户从未签到

8#
 楼主| 发表于 2010-8-20 15:03:21 | 只看该作者
例如:
char *word=lr_eval_string("{soutceID}");
报错:
Action.c (35): illegal statement termination
Action.c (35): skipping `char'
Action.c (35): undeclared identifier `word'
Action.c (35): type error: pointer expected
Action.c (35): operands of = have illegal types `int' and `pointer to char'
Action.c (37): type error in argument 1 to `lr_output_message'; found `int' expected `pointer to char'
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2010-8-20 15:41:29 | 只看该作者
那是因为你变量定义的位置错了,C语言变量的定义一定要放在lr函数的前面,通常在最上面先定义好再使用。
例如:
char * word;
lr_save_string("参数值","soutceID");
word=lr_eval_string("{soutceID}");
lr_output_message(word);
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2010-8-20 16:13:32 | 只看该作者

回复 9# 的帖子

多谢,按你说的ok了,第一次发帖求教,很完美
谢谢各位热心人啊
回复 支持 反对

使用道具 举报

该用户从未签到

11#
发表于 2012-5-18 14:17:48 | 只看该作者
求解
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-9-21 04:19 , Processed in 0.087256 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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