# WinCC (Tia) VB Skript zum String trennen



## Lucius2 (23 Juli 2015)

Zunächst: ich bin noch blutiger VB Anfänger zum skripten. Nach einigen Stunden und Recherche im Internet ist meine Laune gegen null. Ich habe folgendes Problem:
In eine Textdatei schreibe ich Zeilen wie

```
K1001 & vbTab & BlaBla
```
.

Funktioniert auch. Ich brauche nur analog etwas um diese Datei wieder zu lesen und ich bin nur an dem Kram hinter dem Tab interessiert (also BlaBla). Ich hab es schon mit split versucht nach diversen Anleitungen z.B. https://msdn.microsoft.com/de-de/library/6x627e5f(v=VS.90).aspx

Ich bekomm es einfach nicht hin, z.B. kommt ein Fehler mit dem Array:
Fehler 'Subscript out of range: 'TestArray" in Skript <Test> in Zeile 3
was bei mir folgendes ist

```
dim Teststring, Testarray(), test
Teststring = "Look at these!"
TestArray() = Split(Teststring)
test = TestArray(2)
```


Was mich in den Wahnsinn treibt, ist, dass normale VB Anleitungen oft für die Tonne sind, weil WinCC irgendne komische Variante von VB hat, wo man nichts zu findet.


----------



## silverfreaky (23 Juli 2015)

1.)Musst du nicht erst mal alle Leerzeichen entfernen?-->TRim$(String)
2.)Split(s,"&")-->müsste dann in einem Array die 3 "Teilstrings ablegen"
3.)Wenn das & noch drinnen ist mit einem "" Replace(s,&,"") ersetzen.

Musst du bei dem array nicht eine größe angeben?Ist die Anzahl der & immer gleich.Ist das das einzige Trennzeichen?
Greifst du immer auf alle zu oder das letzte? ich kann hier noch kein System erkennen.

Ist das  VBA oder VBS?


----------



## Larry Laffer (23 Juli 2015)

@silverfreaky:
Der Split-Delimiter ist nicht das "&" sondern das vbTab.
Ansonsten stimmt es aber. Wenn Split funktionieren soll dann muss es natürlich den Quellstring haben UND den Delimiter (also das Trennzeichen). Wie sollte Split sonst den String auftrennen ?
Der Code müßte also richtigerweise sein :

```
Dim StringListe

StringListe = Split(Quellstring , vbTab)
```
Nun steht in StringListe(0) der vordere Teil und in StringListe(1) der hintere Teil - also das "BlaBla".

Gruß
Larry


----------



## PN/DP (24 Juli 2015)

Achtung: Auf das zweite Array-Element mit dem BlaBla darf man nur zugreifen, wenn ein Trennzeichen enthalten war. Wenn nicht, dann gibt es das Array-Element(1) gar nicht.

```
TestArray = Split(Teststring, vbTab)
If UBound(TestArray) <> 0 Then 'vbTab war mindestens 1x enthalten
  BlaBla = Trim(TestArray(1))
  '...
End If
```

Harald


----------



## Lucius2 (24 Juli 2015)

Larry Laffer schrieb:


> @silverfreaky:
> Der Split-Delimiter ist nicht das "&" sondern das vbTab.
> Ansonsten stimmt es aber. Wenn Split funktionieren soll dann muss es natürlich den Quellstring haben UND den Delimiter (also das Trennzeichen). Wie sollte Split sonst den String auftrennen ?
> Der Code müßte also richtigerweise sein :
> ...



OK danke das hat so funktioniert, ich hab mit den Array Definitionen was falsch gemacht


----------

