• lr函数之lr_eval_string()函数的使用学习


    lr_eval_string()

    函数的主要作用:返回脚本中的一个参数当前的值(从参数中取得对应的值,并且转换为一个字符串)。

    格式:lr_eval_string("{参数名}");

    例如:lr_eval_string("{parm}");

    返回值类型:char

    由于返回值类型是char类型,所以可以直接使用lr_output_message(lr_eval_string("{parm}"))函数输出到日志中。

    如:lr_output_message(lr_eval_string("{parm}"));

    一般多用在调试脚本时输出参数的值.具体用法如下:
    lr_output_message("The parameter1's value is %s",lr_eval_string("{parameter1}")),其中参数parameter1在之前已经定义了的参数

    lr_log_message(lr_eval_string("{parameter1}"))

      

    改变参数取值的关键在于Select next row和Update value on这两个选项

    select next row包含以下选项:

    Sequential 顺序取值

    Random 随机取值

    Unique 唯一取值

    Same line as 取某个参数的同行

    Update value on 包含以下选项:

    Each iteration 每次迭代更新

    Each occurrence 每次取值更新

    Once 只更新一次

    练习

    编写一个脚本,并以此脚本为练习的实例:

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    parameters的参数值见图

    情况一:Sequential 顺序取值+Each iteration 每次迭代更新

    迭代次数为 1

    结果为:甲

    迭代次数为 2

    结果为:甲 乙

    迭代次数为 3

    结果为:甲 乙 丙

    迭代次数为6

    结果为:甲 乙 丙 丁 戊 

    扩展:

    迭代次数为 1

    Action()
    {
    int i;
    for(i=0;i<3;i++)
    {
    lr_output_message(lr_eval_string("{parameters}"));
    }
    lr_output_message(lr_eval_string("{parameters}"));

    return 0;
    }


    这段执行出的结果为:甲甲甲甲 

    以上脚本将迭代次数修改为2:

    实行结果:甲甲甲甲 乙乙乙乙

    得出的结论:当使用Update value on + Each iteration时,只有出现了Staring iteration 才会触发记录变化,否则取值内容均不会发生变化。

    情况二:Sequential 顺序取值+Each occurrence 每次取值更新

    迭代次数为 1

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    结果为:甲

    迭代次数为 2

    结果为:甲 乙

    迭代次数为 3

    结果为:甲 乙 丙

    迭代次数为6

    结果为:甲 乙 丙 丁 戊

    扩展:

    迭代次数为 1

    Action()
    {
    int i;
    for(i=0;i<3;i++)
    {
    lr_output_message(lr_eval_string("{parameters}"));
    }
    lr_output_message(lr_eval_string("{parameters}"));

    return 0;
    }

    结果为:甲 乙 丙 丁

    迭代次数为 2

    结果为:甲 乙 丙 丁   戊 甲 乙 丙

    得出的结论:Each occurrence 每次取值更新的效果就是,每次取值都会发生变化

    情况三:Sequential 顺序取值+Once 只更新一次

    迭代次数:2

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    结果:甲 甲

    迭代次数:2

    Action()
    {
    int i;
    for(i=0;i<3;i++)
    {
    lr_output_message(lr_eval_string("{parameters}"));
    }
    lr_output_message(lr_eval_string("{parameters}"));

    return 0;
    }

    结果:甲 甲 甲 甲 甲 甲 甲 甲

    得出结论:无论怎么设置迭代或者for循环,取到的{parameters}的值都是“甲”,因为第一次取到的值是“甲”,以后在也不会更新,所以值不变。

    顺序取值下的各种情况

    顺序取值下的各种情况:

    Random取值

    顺序取值的各种方法搞明白后,Random取值(随机取值)就比较简单了,随机取值可以实现在参数列表中随机选择一条记录,将parameters这个参数的Select next row取值方法从sequential改为Random

    Select next row下的Random选项是,参数化的取值情况如下表:

     选择Select next row 下的Unique选项是,参数化取值情况如下表:

     

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    迭代一次:

    1、unique+iteration:

    迭代一次结果:甲

    迭代7次结果:甲 乙 丙 丁 戊 + 两次"When Out Of Values" policy.

     2、unique+Each occurrence:

     3、unique+once

    Action()
    {
    lr_log_message(lr_eval_string("{parameters}"));
    return 0;
    }

    迭代一次:

    执行结果:甲

    迭代7次:

    执行结果:甲甲甲甲甲甲甲

    1.参数的赋值和取值

    lr_save_string("hello world","param");
    lr_eval_string("{param}");
    2.变量到参数
    int x;
    x=10;
    lr_save_string(x,"param");
    lr_eval_string("{param}");
    3.变量读参数
    char x[100];
    x="{param}";
    lr_save_string("hello world","param");
    lr_eval_string(x);
    ---------------------

  • 相关阅读:
    [C#] 逆袭——自制日刷千题的AC自动机攻克HDU OJ
    [安卓] 13、安卓蓝牙定位(一)——如何周期性获得蓝牙节点信号强度?
    [stm32] NRF24L01+USART搞定有线和无线通信
    [安卓] 12、开源一个基于SurfaceView的飞行射击类小游戏
    [安卓] 11、串口蓝牙·将软硬结合进行到底
    [安卓] 10、悬浮窗与获取其他任务信息
    [安卓] 9、线程、VIEW、消息实现从TCP服务器获取数据动态加载显示
    [安卓] 8、VIEW和SURFACEVIEW游戏框架
    [安卓] 7、页面跳转和Intent简单用法
    Git常用命令记录
  • 原文地址:https://www.cnblogs.com/scarlett-hy/p/10336770.html
Copyright © 2020-2023  润新知