Caros,
Frequentemente precisamos preencher alguma string com zeros a esquerda ou algo similar. Um lugar onde frequentemente vemos isto é quando vamos trabalhar com CNAB, onde devemos mandar X casas e só temos (X-5), ex.: Preciso mandar 000003, mas o número que tenho no AX é 3, e para isso, muitos (me incluo nestes) acabam reinventando a roda e fazendo loops para preencher e etc.

Um amigo, Alexssander Valdoski, comentou comigo hoje cedo a respeito do stRFix, me passando um exemplo básico e eu fui atrás para entender melhor seu funcionamento e aqui estou, postando para vocês.

O uso é bem simples como podem ver abaixo:

1
2
3
4
5
6
7
8
9
10
11
12
13
static void Job11(Args _args)
{
    int     i = 1;
    str     formatedLeft, formatedRight;
    str     finalResultLeft, finalResultRight;
    ;
 
    formatedLeft        = strRFix(int2str(i), 5, "0");
    formatedRight       = strLFix(int2str(i), 5, "0");
    finalResultLeft     = strFmt("NUM-%1", formatedLeft);
    finalResultRight    = strFmt("NUM-%1", formatedRight);
    info(strFmt("%1 - %2", finalResultLeft, finalResultRight));
}

Isso produzira a saída:
NUM-00001 – NUM-10000

Abraços,
Pichler