# Erstellen eines Strings (\>80 Zeichen) aus mehreren Teilstrings

**URL:** <https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185>\
**Category:** oscat.lib fuer PC WorX/MULTIPROG\
**Created:** [13. Februar 2017 um 12:41 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185 "2017-02-13T12:41:51Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [13. Februar 2017 um 12:41 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/1 "2017-02-13T12:41:51Z")

</div>

Hallo Zusammen

[Hier](http://www.oscat.de/community/index.php/topic,2033.msg10588.html#msg10588) steht eigentlich die Lösung für mein Problem, doch mit meinem Nichtwissen kann ich die nicht umsetzen.  
Wie genau verbaue ich z.B. oscat\_STRING250 zu einem eigenen CONCAT FB? Wenn ich das richtig sehe, kann ich bei der Original FB nicht einfach den Typ ändern…

Danke  
Bergland

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [13. Februar 2017 um 19:20 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/2 "2017-02-13T19:20:34Z")

</div>

dein problem habe ich noch wirklich verstanden

die string bausteine des systems können ja damit umgehen

string = standard string mit 80 zeichen maximaler länge

oscat\_string250 ist nichts anderes als ein string mit 250 zeichen maximaler länge

was ist den dein eigener concat fb kongret ?

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [14. Februar 2017 um 16:17 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/3 "2017-02-14T16:17:24Z")

</div>

Hallo peewit

Ich wollte eigentlich nix anderes machen als ein FB, der längere Strings als die 80 Zeichen verarbeiten kann.

Was ich eigentlich wirklich beräuchte wär ein gutes Lehrbuch. Leider kann mir der Lieferant der Soft (Phoenix) keines empfehlen…

Hättest Du eine Empfehlung für ein Anfänger?

Besten Dank

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [14. Februar 2017 um 19:27 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/4 "2017-02-14T19:27:11Z")

</div>

buch - ISBN-10: 3642002684

eigene baustein , das kannst du ja auch machen

zuerst überlegst du dir wie viele zeichen du maximal benötigst

wenn du mehr als 80 zeichen (standard string) benötigst kannst du einen eigenen string type deklarieren

unter datentypen legst du ein neues blatt an und schreibst das hinein

TYPE  
mein\_string : STRING(120);  
END\_TYPE

dann exisitiert eine datentype mit dem namen mein\_string und der string kann maximal 120 zeichen aufnehmen

wenn du dann damit arbeiten möchtest musst du variablen mit der type “mein\_string anlegen” und damit arbeiten  
mehr ist das nicht

alle string bausteine die das system schon hat können automatisch mit string variabler typenlänge umgehen  
das ist aber eine eigenschaft die nur diese systembausteine haben

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [15. Februar 2017 um 15:02 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/5 "2017-02-15T15:02:30Z")

</div>

Hallo peewit

Danke für den Buch Tip.  
Aktuell erstelle ich den XML-String mit dem original CONCAT FB. Für mich der einfachste Weg Fehler im Stringaufbau schnell zu erkennen. Nur reichen die 80 Zeichen nicht aus, darum wollte ich mir einen eigenen CONCAT FB mit z.B. 250 Zeichen langen String’s bauen. Obwohl das eigentlich keine grosse Geschichte ist, will mir dies nicht gelingen.

Mit dem Buch, so hoffe ich, komme ich weiter (bis zur nächsten Baustelle… :D)

Danke

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [27. April 2017 um 15:13 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/6 "2017-04-27T15:13:18Z")

</div>

Hallo Zusammen

Habe mir das Buch, welches mir peewit empfohlen hat, gekauft. Leider hilft es nicht so wie erwartet…

Mein Problem ist immer noch, dass ich verschiedene Teilstrings zu einem ganzen zusammenfügen und dann über den STRING\_TO\_BUFFER FB von PC-Worx via IP\_USEND an das Modem senden möchte. Habe mit String\_250 von Oscat den String in der gewünschten Länge erzeugen können. Der FB im PC-Worx kann jedoch nicht verwendet werden, weil die Eingangsstring-Variable zu klein ist.

Die Versuche mit dem Oscat \_STRING\_TO\_BUFFER schlugen fehl, weil die Funktionen ADR(Array) oder SIZEOF(Array) sowie angeblich Pointer-Operationen in PC-Works nicht unterstützt werden.

In ST soll das so aussehen:

```auto
_STRING_TO_BUFFER(STR:=(* oscat_STRING250 *),POS:=(* INT *),SIZE:=(* UINT *),PT:=(* oscat_arb_0_249 *));
(* INT *):=_STRING_TO_BUFFER_2._STRING_TO_BUFFER;
(* oscat_arb_0_249 *):=_STRING_TO_BUFFER_2.PT;

```

Ich habe einen Buffer wie folgt definiert:

```auto
TYPE
   Send_SMS_Buffer: ARRAY[0..255] OF BYTE;
END_TYPE 

```

Wie erhalte ich die Adresse also den Pointer für den Parameter PT und wie die Grösse meines Array für den SIZE Parameter in \_STRING\_TO\_BUFFER?

Einem Beispiel, wie \_STRING\_TO\_BUFFER im PC-Worx in ST aufgerufen wird, bin ich auch nicht abgeneigt.

Danke aus dem Bergland

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [27. April 2017 um 16:39 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/7 "2017-04-27T16:39:24Z")

</div>

> Der FB im PC-Worx kann jedoch nicht verwendet werden, weil die Eingangsstring-Variable zu klein ist.

beschreibe mal genauer was du gemacht hast da ich erkenne nkann was du falsch machst

> Die Versuche mit dem Oscat \_STRING\_TO\_BUFFER schlugen fehl, weil die Funktionen ADR(Array) oder SIZEOF(Array) sowie angeblich Pointer-Operationen in PC-Works nicht unterstützt werden

in der network lib für pcworx gibt es ja einen string\_to\_buffer der ohne ADR und SIZEOF und Pointer arbeitet  
diesen baustein kopiert man und passt ihn auf den PT byteararray zielbereich an

du musst deine probleme darstellen, eventuell durch posten deines codes

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [28. April 2017 um 07:03 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/8 "2017-04-28T07:03:17Z")

</div>

Hallo peewit

Danke für Deine schnelle Antwort.

> [@peewit](#):
>
> beschreibe mal genauer was du gemacht hast da ich erkenne nkann was du falsch machst

Ich möchte einen über 80 Zeichen langen XML-String via IP\_USEND an das Modem senden. Aktuell mache ich dies zu Testzwecken, indem ich die verschiedenen Teilstrings via CONCAT zusammensetze und dann dem STRING\_TO\_BUFFER übergebe. Dieses erfolgt in FBS und funktioniert.

Da ich jedoch mit Arrays und Schleifen arbeiten möchte, versuchte ich diese Funktion in ST zu erstellen.  
Hier der Versuch mit länderen Strings zu arbeiten

```auto

sSMSCallNumber := Array_Alarmempfaenger_cfg[1].F_Telefonnummer;
sSMSMessage := Array_Alarmmeldungen_cfg[1].F_Text_SMS;

sSendSMSText := CONCAT('<?xml version="1.0"?><cmgs destaddrs="', sSMSCallNumber);
sSendSMSText := CONCAT(sSendSMSText, '">');
sSendSMSText := CONCAT(sSendSMSText, sSMSMessage);
sSendSMSText := CONCAT(sSendSMSText, '</cmgs>');

xSendSMSText_LEN := LEN(sSendSMSText);
iSendSMSText_Buffer := STRING_TO_BUFFER(sSendSMSText,rvSendSMSText_Buffer, xSendSMSText_LEN);

```

# Variablen:

Arrays:  
Array\_Alarmempfaenger\_cfg  
Array\_Alarmmeldungen\_cfg

oscat\_STRING250:  
sSMSCallNumber  
sSMSMessage  
sSendSMSText

INT:  
xSendSMSText\_LEN  
iSendSMSText\_Buffer

BYTE:  
rvSendSMSText\_Buffer

Wo mache ich den Fehler?  
Grüsse Bergland

---

<div class="post-metadata">

**Author:** ![peewit](https://avatars.discourse-cdn.com/v4/letter/p/ecc23a/32.png) [@peewit](https://oscat.discourse.group/u/peewit)\
**Post date:** [28. April 2017 um 09:29 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/9 "2017-04-28T09:29:21Z")

</div>

hallo

die infos sind immer noch halb…

BYTE:  
rvSendSMSText\_Buffer  
das muss doch array of byte sein und hast du den string\_to\_buffer angepasst

exportiere doch mal deinen baustein und stelle ihn mir zur verfügung (und alles was dazu gehört)  
du kannst aber auch das gepackte zwt-projekt mir geben

was sagt denn der compiler beim übersetzen ?

schau dir in der oscat-network lib den baustein “TELNET\_LOG” an !

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [28. April 2017 um 15:35 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/10 "2017-04-28T15:35:20Z")

</div>

Hallo peewit

Der Compiler gibt aktuell keine Fehlermeldung mehr aus, aber es funktioniert immer noch nicht.  
Von Phoenix habe ich den Tip erhalten, es mit STRING\_TO\_BUF zu versuchen. Die Stringübergabe scheint zu funktionieren, jetzt meckert das Kommunikationstool…

Kann denn TELNET\_LOG mit einem Socketserver kommunizieren?

Werde mich frühesters gegen Ende nächster Woche wieder um die SPS kümmern können, denn zum Glück habe ich noch “einfachere” Arbeit… 🙂

Grüsse  
Bergland

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/oscat/original/1X/2efdfb9c592ff9a666c94dff124ee84fa863dae5.jpeg) [@system](https://oscat.discourse.group/u/system)\
**Post date:** [4. Mai 2017 um 15:41 UTC](https://oscat.discourse.group/t/erstellen-eines-strings-80-zeichen-aus-mehreren-teilstrings/2185/11 "2017-05-04T15:41:09Z")

</div>

Hallo zusammen

Danke für die Hilfe, welche ich in diesem Forum erhalten habe.  
So wie es ausschaut, ist für das aktuelle Projekt eine SPS nicht das richtige System.

Werde mich deshalb von diesem Forum zurückziehen.

Grüsse  
Bergland
