www.mikrocontroller.net

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


Autor: Chillman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: tüddel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Chillman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Chillman (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Klaus Kehrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
probiere es mal damit:
Public Function Sting_To_Byte(ByVal vData As String) As Byte()
    Dim Bytes() As Byte      
    Dim ActByte As Long
    
    ReDim Bytes(Len(vData) - 1)       ' erzeuge Array, Start mit 0
    
    For ActByte = 0 To UBound(Bytes)  
        ' Mid startet seine Zählung von 1 an !
      
        Bytes(ActByte) = Asc(Mid(vData, ActByte + 1, 1))
    Next ActByte
    Sting_To_Byte = Bytes

End Function



bye
Klaus

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.