| |  | Online-Kurs: Grundlagen des 3D-Druck-Designs für Industrieingenieure , ein Kurs
|
Autor
|
Thema: Problem mit StartsWith() (1532 mal gelesen)
|
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3585 Registriert: 04.08.2005
|
erstellt am: 02. Jul. 2007 09:40 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich möchte jede Zeile eine Textdatei nach einem Zeilenanfang durchsuchen und wenn es ihn gibt, soll etwas bestimmtes gemacht werden. Ich habe also eine txt-Datei mit so einem Inhalt:
Code:
** *Step, name=name1 ** *Step, name=name2 ** ** *Step **
Ich lese die gesamte Datei ein, lege sie unter dem String "daten" ab und splitte die Zeilen in den String-Array "zeilen". Danach möchte ich alle Array-Einträge in einer Schleife bzgl. ihres Anfangs überprüfen. Code:
Dim daten, zeilen(), stepzeile() As String Dim i As Integerzeilen = daten.Split(vbCr) For i = 0 To zeilen.Length - 1 If zeilen(i).StartsWith("*Step") Then stepzeile = (zeilen(i).Split(",")) MsgBox(stepzeile(1)) End If Next
Leider klappt das aus irgendeinem Grund nicht und ich weiß nicht warum. Eigentlich erwarte ich jeweils eine MsgBox mit "name=namex" (x ist Nummer). Kann ich die jeweiligen Array-Felder nicht mit StartsWith() kontrollieren oder könnte es an dem * (wildcard) bei *Step liegen? Ich habe schon zeilen(i).StartsWith(Chr(42) & "Step") probiert, aber das klappt auch nicht. Wenn ich in der If-Schleife als Kontrolle InStr(zeilen(i), "*Step") verwende klappt es. Das möchte ich aber nicht nutzen, da dann ja auch die vorletzte Zeile verwendet wird, was ich aber nicht möchte. Ich arbeite übrigens mit Visual Basic Express 2005. Vielen Dank im Voraus für die Hilfe. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Axel.Strasser Ehrenmitglied V.I.P. h.c. Selbstständig im Bereich PLM/CAx

 Beiträge: 4107 Registriert: 12.03.2001 Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!
|
erstellt am: 02. Jul. 2007 09:48 <-- editieren / zitieren --> Unities abgeben:          Nur für Mustaine
Versuche es doch mal mit InStr(zeilen(i), "Step,") alternativ in vbs (sollte aber in vb analog gehen) würde ich noch nehmen: if Instr(2, zeilen(i), "Step") = 2 then Axel [Diese Nachricht wurde von Axel.Strasser am 02. Jul. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tbd Moderator Teamleiter
  
 Beiträge: 825 Registriert: 26.01.2006 Dell Percision T5400 Intel(R) Xeon(R) CPU X5460 @ 3.16GHz 3,25 GB RAM Nvidia Quadro FX 4600
|
erstellt am: 02. Jul. 2007 10:13 <-- editieren / zitieren --> Unities abgeben:          Nur für Mustaine
Hallo Mustaine, ich habe jetzt keine Idee warum es bei dir nicht klappt. Ich habe mal deine Textdatei Zeilenweise ausgelesen, da klappt es! Code:
Dim sDateiPfad As String = "C:\Test.txt" Dim oStream As New System.IO.StreamReader(sDateiPfad) Dim sZeilenArray() As String 'Bis zum Zeilenende lesen Do While oStream.Peek() <> -1 Dim sZeile As String = oStream.ReadLine() If sZeile.StartsWith("*Step") Then sZeilenArray = sZeile.Split(CChar(",")) MsgBox(sZeilenArray(1)) End If Loop oStream.Close()
Ich kann mir nicht vorstellen das es an dem Array liegt, aber wie gesagt, warum weis ich nicht? Ich hoffe jedoch das dieser Codeschnipsel dir weiter hilft! ------------------ Mfg Daniel Wer A sagt, der muss nicht B sagen. Er kann auch erkennen, dass A falsch war. Bertolt Brecht ------------------ SolidWorks | API | Makro | Schulung | Freeware | Schuler Design Automation GmbH Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mustaine Ehrenmitglied V.I.P. h.c.
     
 Beiträge: 3585 Registriert: 04.08.2005
|
erstellt am: 02. Jul. 2007 16:07 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |