Vampire Geschrieben 2. September 2002 Teilen Geschrieben 2. September 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
NickiD Geschrieben 2. September 2002 Teilen Geschrieben 2. September 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hippocrates Geschrieben 2. September 2002 Teilen Geschrieben 2. September 2002 Sind da Leerzeichen zwischen den Spalten? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vampire Geschrieben 2. September 2002 Autor Teilen Geschrieben 2. September 2002 ja, unterschiedlich viele. in der 4. Spalte zwischen den "" können auch noch welche sein. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hippocrates Geschrieben 2. September 2002 Teilen Geschrieben 2. September 2002 Aber in den Spalten die du selektieren willst sind keine mehr, oder? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vampire Geschrieben 2. September 2002 Autor Teilen Geschrieben 2. September 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Hippocrates Geschrieben 2. September 2002 Teilen Geschrieben 2. September 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fireworker Geschrieben 3. September 2002 Teilen Geschrieben 3. September 2002 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"! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Vampire Geschrieben 3. September 2002 Autor Teilen Geschrieben 3. September 2002 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
fireworker Geschrieben 3. September 2002 Teilen Geschrieben 3. September 2002 Wenn's klappt ist's doch super!!! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
aokieh Geschrieben 4. September 2002 Teilen Geschrieben 4. September 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.