web_convert_param для порядковых значений в loadrunner - PullRequest
0 голосов
/ 20 апреля 2020

Я ищу преобразование каждого порядкового значения, возвращенного из web_reg, используя web_convert_param для l oop и выполняю некоторые операции. Ниже приведен мой код:

char str1[] = "";
web_reg_save_param("fetch", "LB=XXXXX", "RB=YYYYY", "ORD=ALL", LAST);

lr_param_sprintf("c_final_buf", "");

for (k = 1; k <= atoi(lr_eval_string("{fetch_count}")); k++){

        sprintf(str1, "%s", lr_paramarr_idx("fetch",k));

        lr_save_string(str1, "buffer1");

        web_convert_param("buffer1Conv", "SourceString={buffer1}", "SourceEncoding=PLAIN", "TargetEncoding=URL",LAST);

        lr_param_sprintf("c_buffer", "ABC%s=%s&",
                         lr_paramarr_idx("c_param",k), lr_eval_string("{CovPunchVal}"));

        lr_param_sprintf("c_final_buf", "%s%s", lr_eval_string("{c_final_buf}"), lr_eval_string("{c_buffer}"));
    }

Используя вышеупомянутый код, иногда я получаю ИСКЛЮЧЕНИЕ НАРУШЕНИЯ ПАМЯТИ на sprintf(str1, "%s", lr_paramarr_idx("fetch",k));. Может ли кто-нибудь подсказать, как мне достичь выше, без привлечения каких-либо внешних переменных.

РЕДАКТИРОВАТЬ1: Хотел бы избежать использования lr_paramarr_idx("c_param",k), а также может вызвать исключения памяти во время выполнения, как в нескольких онлайн-формах.

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020

Теперь проблема решена. Ниже приведен код обновления:

char tmpbuf[256];
for (k = 1; k <= atoi(lr_eval_string("{fetch_count}")); k++){

        // sprintf(str1, "%s", lr_paramarr_idx("fetch",k));
        // lr_save_string(str1, "buffer1");

        sprintf(tmpbuf, lr_paramarr_idx("fetch",k));

        lr_save_string(tmpbuf, "buffer1");

        web_convert_param("buffer1Conv", "SourceString={buffer1}", "SourceEncoding=PLAIN", "TargetEncoding=URL",LAST);

        lr_param_sprintf("c_buffer", "ABC%s=%s&",
                         lr_paramarr_idx("c_param",k), lr_eval_string("{CovPunchVal}"));

        lr_param_sprintf("c_final_buf", "%s%s", lr_eval_string("{c_final_buf}"), lr_eval_string("{c_buffer}"));
    }

0 голосов
/ 21 апреля 2020

Причина, по которой вы получаете ИСКЛЮЧЕНИЕ НАРУШЕНИЯ ПАМЯТИ на sprintf(str1, "%s", lr_paramarr_idx("fetch",k));, может быть связана с объявлением str1.

Это должен быть массив символов фиксированного размера, например char str1[256];, а не char str1[] = "";

Также, возможно, следующий код может быть вам полезен в качестве альтернативы:

    int k;    
    int count;

//web_reg_save_param("fetch", "LB=XXXXX", "RB=YYYYY", "ORD=ALL", LAST);

// simulation of parameters array

            lr_save_string("101:abc","fetch_1");
            lr_save_string("102:abc","fetch_2");
            lr_save_string("103:abc","fetch_3");
            lr_save_string("104:abc","fetch_4");
            lr_save_string("105:abc","fetch_5");
            lr_save_string("106:abc","fetch_6");
            lr_save_string("107:abc","fetch_7");
            lr_save_string("108:abc","fetch_8");
            lr_save_string("109:abc","fetch_9");
            lr_save_string("110:abc","fetch_10");
            lr_save_string("111:abc","fetch_11");
            lr_save_string("112:abc","fetch_12");
            lr_save_string("113:abc","fetch_13");
            lr_save_string("114:abc","fetch_14");
            lr_save_string("115:abc","fetch_15");
            lr_save_string("116:abc","fetch_16");
            lr_save_string("117:abc","fetch_17");
            lr_save_string("118:abc","fetch_18");
            lr_save_string("119:abc","fetch_19");
            lr_save_string("120:abc","fetch_20");

            lr_save_string("20","fetch_count");


// convert values inside array            
count =  atoi(lr_eval_string("{fetch_count}"));          

for (k = 1; k <= count; k++){
                lr_save_int(k,"ParamIndex");
                web_convert_param(lr_eval_string("fetch_{ParamIndex}"), "SourceEncoding=PLAIN", "TargetEncoding=URL",LAST);
}

// continue the required manipulations…

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...