INÍCIO > Fórum > Programação IEC 61131 (LogicLab) > Convertendo uma variável INT em uma String
etiquetadas: CONVERSÃO DE INT PARA STRING
- Este tópico tem 1 respostas, 2 participantes e foi atualizado pela última vez 1 ano, 5 meses atrás da Sergio Bertana.
-
autorPublique
-
Novembro 9, 2022 em 6: 06 pm #68561Jose Romanoparticipante
Eu precisaria criar uma mensagem de texto composta por uma parte fixa no formato String e uma variável numérica no formato INT. Vindo da programação embarcada em C, pensei na solução simples de converter a variável INT em uma String e depois concatená-la com a primeira parte da mensagem ou a String já disponível. Exemplificando:
String1: = 'seu número é:' (variável de string)
contador: = 1 (variável INT)
MessageFinale = String1 & INT_TO_STR (contador) - variável de resultado do tipo string
No exemplo a função INT_TO_STR() seria a função que eu precisaria. Não encontro nada parecido no manual e no fórum, exceto a função SysVsnprintf que ainda não descobri se pode ser usada para esse fim.
Por favor, poderia me dar alguma informação sobre isso? obrigada
Novembro 10, 2022 em 9: 30 am #68564Sergio BertanaAdministrador do fórumSim é a função SysVsnprintf é o que você tem que usar, já que você tem experiência de programação em linguagem C a função se comporta como o snprintf() del C. A única diferença é que os argumentos não podem ser variáveis, mas devem sempre ser um único argumento cujo tipo deve ser definido.
Atendendo a sua necessidade, se você procurar no manual encontrará muitos exemplos de uso desta função mas aqui está um exemplo para sua necessidade.
PROGRAM MyProgram VAR i : UDINT; (* Auxiliary variable *) Counter : ARRAY[0..1] OF UINT := [10, 20]; (* Counter value *) Message : STRING[ 32 ]; (* Final message *) END_VAR // Esempio di concatenazione stringhe con funzioni. i:=SysVsnprintf(ADR(Message), SIZEOF(Message), ADR('Counter[0]: %d'), UINT_TYPE, ADR(Counter[0])); //'Counter[0]: 10' i:=SysCVsnprintf(ADR(Message), SIZEOF(Message), ADR(', Counter[1]: %d'), UINT_TYPE, ADR(Counter[1])); //'Counter[0]: 10, Counter[1]: 20' // Esempio di concatenazione stringhe con operatori di conversione. Message:=CONCAT('Counter[0]: ', TO_STRING(Counter[0])); //'Counter[0]: 10' Message:=CONCAT(Message, ', Counter[1]: '); //'Counter[0]: 10, Counter[1]: ' Message:=CONCAT(Message, TO_STRING(Counter[1])); //'Counter[0]: 10, Counter[1]: 20' // [End of file]
Como você pode ver, obtive o mesmo resultado usando as funções ou os operadores de conversão de string. No exemplo também visualizei como fazer uma concatenação de valores, a função snprintf() de C permitiria fazer tudo em uma única linha de código:
i=snprintf(Message, SIZEOF(Message), "Counter[0]: %d, Counter[1]: %d", Counter[0], Counter[1]);
-
autorPublique
- Você deve estar logado para responder a este tópico.