Array
(
)

Macro Substituição C# Windows Forms

Rodrigo Lameira
   - 05 jul 2011

Como fazer Macro Substituição no C#? no Visual Fox Pro ou clipper uso o caracter
"&" mas não tem correspondente em C#... Se alguem conhecer alguma função para
fazer macro substituição, gentileza me informar.

Para quem não conhece macro substituição é o seguinte: imagine uma tabela de
formulas em uma folha de pagamento e durante o processamento desta folha vc vai
processar aquela formula expressa em uma campo string de uma tabela.... Assim:

Vale_transporte = Campo_Formula ( o conteudo do campo formula digitado no banco
de dados é : "Salario_Base * 6/100").
Então Vale_Transporte = "Salario_Base * 6/100" esta expressão não é processado
em C#, pois, é considerado como string e não como expressão, porque veio de uma
varivel string.

Em FOX PRO seria: vale_transporte = &Campo_Formula , veja que o simbolo & faz a
substituição da varivel pelo conteúdo dela.... então o resultado final seria:
vale_tranporte = Salario_Base * 6/100 sem as aspas, significando que é uma
expressão.
Se vc souber como fazer uma string virar uma expressão...

gentileza me informar... ficarei grato...

Evandro Lopes
   - 05 jul 2011

Considerando que Salario_Base é o nome do atributo que vc adcionou o valor do banco de dados, vc pode fazer isso -> double.Parse(Salario_Base) * 6 / 100; o Parse serve para transformar um valor string para um tipo q vc definir, no caso eu defini double, mas pode ser int.Parse(string).. Espero ter ajudado, falei assim bem cru, pois acredito que esse Salario_Base já esteja populado algum valor.   Abraços.

Rodrigo Lameira
   - 05 jul 2011

Caro Evandro,

não é exatamente isso acho que não expliquei bem.. :)

vamos para um outro exemplo:

no meu caso é uma fórmula para calcular média das notas de alunos.

tenho um campo FORMULAX onde o próprio usuário cria sua fórmula personalisada.
É disponibilizado algumas variáveis de trabalho para ele.
WB1 = nota 1º bimestre
WB2 = nota 2º bimestre
WB3 = nota 3º bimestre
WB4 = nota 4º bimestre

Então o próprio usuário monta a fórmula da maneira que quiser.

OBS: as vezes trabalham com peso e outras particularidades, dai pode ficar bem mais complexa.

FORMULAX = "((WB1+WB2)/2+(WB3+WB4)/2)/2"

Cada uma destas variáveis contem um valor. Consigo trocalos na string com FORMULAX.Replace(WB1, "7.5")

dai a String fica assim:

"((7.5+10.0)/2 + (6.0+5.0)/2)/2" agora surge o problema como transformar essa String em valor numerico ???

veja se pode me ajudar...

Abraços.

Evandro Lopes
   - 06 jul 2011

Fala Rodrigo, agora entendi sim. Que buxa que vc pegou em... Na boa, se vc qr um conselho, melhor vc pedir para q o Usuario defina a vc as formulas que ele mais utiliza, q sempre vai utilizar. Isso que vc qr da sim para ser feito, mas não seria muito simples.
Um regex talvez pudesse te ajudar, porém vc iria ter um trabalho do cão da mesma maneira. No momento estou no trampo, vou ver isso qndo chegar em casa. Mesmo q consiga depois eu disponibilizo aki o resultado que consegui, achei isso interessante, porém qnto menos liberdade vc der ao usuario melhor seria.

Abraços.