# String-Deklaration CoDeSys



## Solaris (5 November 2010)

Hallo Spezis,

in CoDeSys kann man Variablen direkt einer Adresse/Merker zuordnen.

Eine Variablendeklaration hat folgende Syntax:
<Bezeichner> {AT <Adresse>}:<Typ> {:= <Initialisierung>};

das sieht dann etwa so aus:

```
var1 [COLOR=Blue]AT[/COLOR] [COLOR=Magenta]%MW10[/COLOR]: [COLOR=Blue]INT[/COLOR]:=13;
```
nun möchte ich das auch mit einem String machen:

```
name1 [COLOR=Blue]AT[COLOR=Magenta]......[/COLOR][/COLOR]:[COLOR=Blue]STRING[/COLOR](15);
```
ist so etwas möglich, was muß ich dann dort einsetzen?
Es geht darum den ensprechenden String direkt über seine Speicheradresse anzusprechen.


Gruß
Soli


----------



## Cerberus (5 November 2010)

Ich kenne es von TwinCAT her so, dass dort die Adressvergabe automatisch geschieht. Ist das bei Codesys auch so??

Zusätzlich gibt es in TwinCAT die Möglichkeit über ADR(VarName) die Adresse der Variablen zu bekommen. Gibt es das auch in Codesys??


----------



## RobiHerb (5 November 2010)

*Müsste gehen*

Ich habe bereits Strings auf feste Adressen gelegt (Spezielle Visualisierungs Rechner bei INTERCONTROL Displays) und der Adress Operator sollte immer gehen, da man sonst nicht mit Zeigern arbeiten könnte.


----------



## ebt'ler (5 November 2010)

Also ich würde es so deklarieren:


```
name1 AT %MB10: STRING(15):='ini';
pt: pointer to string (15);
```
Für den Zugriff dann:

```
pt:=ADR(%MB10);
pt^:='neu'; 
//oder
name1:='neu';
```
Wobei MB10 bis 24 dann natürlich nicht anderweitig belegt werden sollten.

EDIT: Wieso soll der String eigentlich auf einen Merkerbereich gelegt werden?


----------



## Solaris (7 November 2010)

ebt'ler schrieb:


> EDIT: Wieso soll der String eigentlich auf einen Merkerbereich gelegt werden?



In diesem Fall kann eine angebundene Visualisierung nur auf die Merkerbereiche zugreifen, deswegen muß ich den Speicherort direkt zuweisen.


----------



## ebt'ler (7 November 2010)

Na dann müsste:


```
name AT %MB10: STRING(15):='string_text';
```
...eigentlich reichen. Die Zeichen des Strings liegen dann (entsprechend der ASCI-Tabelle) in den entsprechenden Merkerbereich. Kommt halt auf die Visu an, wie die Werte interpretiert werden.


----------

