Forum: PC-Programmierung String in einzelne Zeichen Zerlegen in VB 6


von Chillman (Gast)


Lesenswert?

Hallo,

ich bin blutiger anfänger in VB und suche schon den ganzen tag nach 
einer möglichkeit einen langen string (118 zeichen), bestehend aus 
nullen und einsen auseinanderpflücken zu können, sprich mir jedes 
zeichen einzeln aus dem string holen zu können um es auszuwerten.

nebenbei: den string bekomme ich mittels MSComm über die rs232 von einem 
µC rein. evtl gibt es ja alternativ die möglichkeit die zeichen in ein 
array einzulesen? dann könnte ich ja auf jeden fall byte für byte 
auswerten.

Gruß Chillman

von tüddel (Gast)


Lesenswert?

also unter c# würde ich das so machen

foreach(char c in string)
{
   //machwas mit dem zeichen in der variable c
}

sowas sollte es auch unter vb geben

von Hannes L. (hannes)


Lesenswert?

Wenn es wirklich ein String ist, dann solltest Du ihn mit Mid$() 
zerlegen können. Um nicht hinter das Stringende zu greifen, sollest Du 
mit Len() doe Länge des Strings ermitteln.

...

von Chillman (Gast)


Lesenswert?

der string ist ein code aus nullen und einsen aus 118 zeichen den ich 
kommplett zerlegen will.einige zeichen sollen dann einzeln ausgewertet 
werden und andere zu einer neue zeichenkette zusammengefügt werden
habs schon z.b. mit

mid(string1,10,[1])=mid(stringx,3,[1])

veruscht. dass das 10 zeichen aus string1 zum 3ten zeichen in stringx 
wird. sowas wäre am optimalsten

von Hannes L. (hannes)


Lesenswert?

Also so richtig verstehe ich Dich immer noch nicht...

Chillman wrote:
> der string ist ein code aus nullen und einsen aus 118 zeichen

Ist das bereits ein "String", also liegt er bereits in einer Variable 
vom Typ String mit der Länge von 118 Zeichen?? (Nachprüfen mit 
"Len(string)")

> den ich
> kommplett zerlegen will.einige zeichen sollen dann einzeln ausgewertet
> werden und andere zu einer neue zeichenkette zusammengefügt werden

Das sollte problemlos möglich sein.

> habs schon z.b. mit
>
> mid(string1,10,[1])=mid(stringx,3,[1])
>
> veruscht.

Und?? Hat es das gemacht, was Du erwartet hast?

> dass das 10 zeichen aus string1 zum 3ten zeichen in stringx
> wird. sowas wäre am optimalsten

Wenn ich aus Fragmenten eines Strings einen anderen String zusammenbauen 
muss, dann fange ich meist mit einem leeren String an.

String2=""

Dann füge ich (manchmal in einer Schleife) die benötigten Teile hinzu:

String2=String2 & Mid$(String1,x,y)
String2=String2 & " " & Mid$(String1,a,b) 'Lerrzeichen als Trennzeichen

Auch Konstanten (wie das Leerzeichen) lassen sich so einfügen.

...

von Chillman (Gast)


Lesenswert?

Moin,
ja das hatte funktioniert, allerding wurde es mir irgendwann zu viel das 
per hand zu machen, da ich das ganze auch noch andersrum machen muss. 
daher die idee die zeichen komplett erstmal umzustellen, d.h aus dem 
ersten string (Daten) mit 118 zeichen wird ein neuer string (Daten2) mit 
118 zeichen aber mit einer anderen reihenfolge. dazu hab ich mir dann 
ein array gebastelt, dass die neue reihenfolge enthällt und dann 
versucht das über eine sschleife zu machen, dies funktioniert aber 
leider nicht und ich verstehe nicht warum

Dim i as byte
Dim k as byte
.
.
.
position=array(115,4,15,17,usw.)
.
.
.
k=0
For i = 1 To 118
Mid(Daten2, i, 1) = Mid(Daten, position(k), 1)
k = k + 1
next
.
.
.

dabei kommt dan folgende fehlermeldung
"Laufzeitfehler '13'
Typen unverträglich"

von Klaus Kehrer (Gast)


Lesenswert?

Hi,
probiere es mal damit:
1
Public Function Sting_To_Byte(ByVal vData As String) As Byte()
2
    Dim Bytes() As Byte      
3
    Dim ActByte As Long
4
    
5
    ReDim Bytes(Len(vData) - 1)       ' erzeuge Array, Start mit 0
6
    
7
    For ActByte = 0 To UBound(Bytes)  
8
        ' Mid startet seine Zählung von 1 an !
9
      
10
        Bytes(ActByte) = Asc(Mid(vData, ActByte + 1, 1))
11
    Next ActByte
12
    Sting_To_Byte = Bytes
13
14
End Function



bye
Klaus

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.