Startseite > Forum > IEC 61131-Programmierung (LogicLab) > Konvertieren einer INT-Variablen in einen String
Stichwort: KONVERTIERUNG VON INT IN STRING
- Dieses Thema hat 1 Antworten, 2 Teilnehmer und wurde zuletzt aktualisiert 1 Jahr, 5 Monaten da Sergio Bertana.
-
AutorPost
-
November 9, 2022 bei 6: 06 pm #68561Giuseppe RomanoPartecipante
Ich müsste eine Textnachricht erstellen, die aus einem festen Teil im String-Format und einer numerischen Variablen im INT-Format besteht. Aus der Embedded-Programmierung in C kommend hatte ich an die einfache Lösung gedacht, die INT-Variable in einen String umzuwandeln und diese dann mit dem ersten Teil der Nachricht oder dem bereits vorhandenen String zu verketten. Beispielhaft:
String1: = 'Ihre Nummer ist:' (String-Variable)
Zähler: = 1 (INT-Variable)
MessageFinale = String1 & INT_TO_STR (Zähler) - Ergebnisvariable vom Typ String
Im Beispiel wäre die Funktion INT_TO_STR () die Funktion, die ich brauchen würde. Ich finde nichts dergleichen im Handbuch und im Forum, außer der SysVsnprintf-Funktion, von der ich noch nicht herausgefunden habe, ob sie für diesen Zweck verwendet werden kann.
Könntest du mir dazu bitte ein paar Informationen geben? Vielen Dank
November 10, 2022 bei 9: 30 #68564Sergio BertanaAdministrator des ForumsJa, es ist die Funktion SysVsnprintf ist das, was Sie verwenden müssen, da Sie Erfahrung mit der Programmierung in der Sprache C haben, verhält sich die Funktion wie die snprintf() del C. Der einzige Unterschied besteht darin, dass die Argumente keine Variablen sein können, sondern immer ein einzelnes Argument sein müssen, dessen Typ definiert werden muss.
Wenn Sie in das Handbuch schauen, finden Sie viele Beispiele für die Verwendung dieser Funktion, aber hier ist ein Beispiel für Ihren Bedarf.
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]
Wie Sie sehen können, habe ich das gleiche Ergebnis mit den Funktionen oder den String-Konvertierungsoperatoren erhalten. In dem Beispiel, das ich auch visualisiert habe, wie man eine Verkettung von Werten erstellt, hätte die Funktion snprintf () von C es Ihnen ermöglicht, alles in einer einzigen Codezeile zu erledigen:
i=snprintf(Message, SIZEOF(Message), "Counter[0]: %d, Counter[1]: %d", Counter[0], Counter[1]);
-
AutorPost
- Sie müssen angemeldet sein, um auf dieses Thema antworten zu können.