Inicio > Foro > Programación IEC 61131 (LogicLab) > Convertir una variable INT en una cadena
tagged: CONVERSIÓN DE INT A CADENA
- Este tema tiene 1 respuestas, 2 participantes y se actualizó por última vez 1 año, hace 5 meses da Sergio Bertana.
-
autorPublicación
-
Noviembre 9, 2022 en 6: 06 pm #68561Giuseppe Romanopartícipe
Necesitaría crear un mensaje de texto que constara de una parte fija en formato String y una variable numérica en formato INT. Viniendo de la programación integrada en C, había pensado en la solución simple de convertir la variable INT en una Cadena y luego concatenarla con la primera parte del mensaje o la Cadena ya disponible. ejemplificando:
String1: = 'su número es:' (Variable de cadena)
contador: = 1 (variable INT)
MessageFinale = String1 & INT_TO_STR (contador) - variable de resultado de tipo cadena
En el ejemplo, la función INT_TO_STR () sería la función que necesitaría. No encuentro nada como esto en el manual y en el foro, a excepción de la función SysVsnprintf que aún no he descubierto si se puede usar para este propósito.
¿Podría por favor darme alguna información sobre esto? Gracias
Noviembre 10, 2022 en 9: 30 am #68564Sergio BertanaAdministrador del forosi es la funcion SysVsnprintf es lo que tienes que usar, ya que tienes experiencia de programación en lenguaje C la función se comporta como la snprintf() del C. La única diferencia es que los argumentos no pueden ser variables sino que siempre deben ser un solo argumento cuyo tipo debe ser definido.
En cuanto a su necesidad, si busca en el manual, encontrará muchos ejemplos de uso de esta función, pero aquí hay un ejemplo para su necesidad.
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 puede ver, obtuve el mismo resultado usando las funciones o los operadores de conversión de cadenas. En el ejemplo también visualicé cómo hacer una concatenación de valores, la función snprintf() de C te hubiera permitido hacer todo en una sola línea de código:
i=snprintf(Message, SIZEOF(Message), "Counter[0]: %d, Counter[1]: %d", Counter[0], Counter[1]);
-
autorPublicación
- Debe iniciar sesión para responder a este tema.