Veröffentlicht 2. September 200223 j Hallo zusammen, ich hab folgendes Problem, ich lese aus einer Steuerungsdatei die Werte ein. Dabei sieht eine Zeile z.B. folgendermaßen aus: S * DEA20 "0020" 1 1 111 114 S * AEV "AEV" 1 1 1 3 Die Informationen die ich benötige sind hier aber nur DEA20, 0020, 111 und 114 in der zweiten Zeile AEV, AEV, 1 und 3. Das Problem ist nun, ich weiß nicht wieviel Blanks zwischen den Werten sind, das kann varieren. Weiß da jemand eine Lösung, wie ich an die Werte komme? Die Einzigen konstanten Sachen sind S, * und die beiden 1er in der 5 und 6 Spalte. Ich habe immer 8 Spalten, benötigt werden halt die Spalten 3, 4, 7 und 8.
2. September 200223 j Vielleicht hilft Dir das: InStr-Funktion wird verwendet, um die Position des ersten Auftretens einer Zeichenfolge innerhalb einer anderen Zeichenfolge zurückzugeben. Mid-Funktion wird verwendet, um eine bestimmte Anzahl von Zeichen aus einer Zeichenfolge zu liefern. Nicki
2. September 200223 j ja, unterschiedlich viele. in der 4. Spalte zwischen den "" können auch noch welche sein.
2. September 200223 j Original geschrieben von Hippocrates Aber in den Spalten die du selektieren willst sind keine mehr, oder? Nur in der 4. (wird auch benötigt), in den anderen nicht
2. September 200223 j Bin jetzt gleich weg. Habe gerade allerdings kein VB da Aber, wie NickiD, schon sagte, schau dir mal die Funktionen Instr, Mid und len, ggf. noch left und right an Instr: Ermittelt die Position eines Zeichens in einem String Mid: Damit kannst du einen Teil eines strings selektieren (Du kannst die Anfangs- und Endposition angeben) Sorry, du gibst die Länge an Len: Ermittelt die Länge eines Strings Left: Da kannst du vom ersten Zeichen bis zu einem angegebenen Zeichen selektieren. Right: Das gleiche von Rechts. Kann auch sein, dass es sich um die Länge handelt Du kannst mit diesen Funktionen deine Spalten einer Variablen übergeben. Z.B. posstern = InStr(1, zeichen, "*") posstern2 = Instr(postern,zeichen, " ") spalte1 = mid(zeichen,posstern1,posstern1-posstern2) Mir ist gerade aufgefallen, das ich was vergessen habe. Wobei Zeichen dein String ist. Aber so weit ich weiß, mag vb aber keine 2 " in einem String, oder irre ich mich. Du kannst auch nach " " (Leerzeichen) Suchen. Mußt dich halt von Leerzeichen zu Leerzeichen ziehen. Von rechts nach links. Du kannst ja die Position angeben. Hoffe ich konnte die als Newbi helfen. Ich wünsche dir viel Glück dabei.
3. September 200223 j Ich würde Dir empfehlen mit InStr, Mid, Trim und vielen Variablen zu arbeiten. (Aber nicht damit durcheinanderkommen) Da Trim alle Leerzeichen links und rechts "wegradiert"!
3. September 200223 j ich habs mal so gemacht: li_pos1 = InStr(1, ls_zeile, Chr(34)) li_pos2 = InStr(li_pos1 + 1, ls_zeile, Chr(34)) ls_teil1 = Trim(Left(ls_zeile, li_pos1 - 1)) ls_teil2 = Trim(Mid(ls_zeile, li_pos1 + 1, li_pos2 - li_pos1 - 1)) ls_teil3 = Trim(Right(ls_zeile, Len(ls_zeile) - li_pos2)) ls_temp = Split(ls_teil1, " ") li_zaehler_temp = 1 For li_zaehler = 0 To UBound(ls_temp) If ls_temp(li_zaehler) <> "" Then ls_werte(li_zaehler_temp) = ls_temp(li_zaehler) li_zaehler_temp = li_zaehler_temp + 1 End If Next li_zaehler ls_werte(li_zaehler_temp) = ls_teil2 ls_temp = Split(ls_teil3, " ") For li_zaehler = 0 To UBound(ls_temp) If ls_temp(li_zaehler) <> "" Then li_zaehler_temp = li_zaehler_temp + 1 ls_werte(li_zaehler_temp) = ls_temp(li_zaehler) End If Next li_zaehler Vielleicht nicht unbedingt die schönste Variante, aber hier für reicht es. Und bis jetzt klappts auch...
4. September 200223 j Hallo, eine gute Beschreibung der Stringzerlegung steht im Buch Visual Basic 6 vom Kofler S.398. trim() --schneider leerzeichen am ende und am anfang der strings weg left(s,n) liefert die n ersten Zeichen des Strings right(s,n) liefert die n letzten Zeichen von s mid(s,n) liefert die Zeichen ab der n-ten Position len(s) abzahl der zeichen von s. usw. Gruß aokieh
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.