tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
12
ZUGRIFFE
1028
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    pking pking ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Beiträge
    79
    Hallo

    Ich hab bereits schonmal gefragt und schon OFT GENUG in dem Forum gesucht jedoch wurde ich nicht fündig und dafür reichen leider meine VB kentnisse nicht aus!

    Und zwar:

    Wenn ich eine textdatei öffne möchte ich nach einem gewissen Wort suchen "blub"
    das Wort sieht z.B so aus:

    hihieihreiblubfeiwfw darin befindet sich das Wort blub unter viele anderen Zeilen! jedoch möchte ich nur suchen ob das Wort blub vorhanden ist.
    Wenn das Wort blub vorhanden ist dann soll er es in eine Textdatei schreiben mit der GANZEN zeile von anfang bis zum ende ich such schon echt lang nach sowas!

    Ich weis ich muss jede Zeile einlesen aber wie geht sowas davon hab ich leider keine Ahnung wenn mir jemand so ein kleines programm basteln bzw. sowas wird doch oft gebraucht hier mal reinkopieren könnte!?


    mfg
    pking
     

  2. #2
    Avatar von wincnc
    wincnc wincnc ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    632
    Hallo, versuch´s mal hiermit:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    
    Private Sub Command1_Click()
    Dim Zeile As String
    Dim Nr As Integer
    Dim Nr2 As Integer
     
    Nr = FreeFile
     
    Open "D:\Test.txt" For Input As #Nr
        
      Nr2 = FreeFile
      
      While Not EOF(Nr)
        Line Input #Nr, Zeile
          If InStr(1, Zeile, "blub") Then
            Open "d:\Gefunden.txt" For Append As #Nr2
             Print #Nr2, Zeile
            Close #Nr2
          End If
      Wend
      
    Close #Nr
     

  3. #3
    pking pking ist offline Mitglied Silber
    Registriert seit
    Nov 2004
    Beiträge
    79
    danke

    nur noch end sub ;p
     

  4. #4
    schwendes schwendes ist offline Rookie
    Registriert seit
    Sep 2005
    Beiträge
    6
    Hi,

    hab mir den Code mal zu Nutze gemacht, da ich soetwas ähnliches
    brauche. Hab da allerdings noch ein kleines Problem und zwar
    liest er mir immer nur die erste Zeile aus. Ich möchte aber
    zum Beispiel auch die Zeile 2 oder 10 prüfen.Aber egal ob ich
    bei If InStr(1, Zeile, "Test") Then ne 2 einfüge er prüft diese nicht ab.
    Bin nicht so derVB Profi, vieleicht kann mir ja mal einer helfen, der sich
    damit auskennt und mir sagen wo hier mein Fehler liegt.

    Danke schonmal im voraus.

    Hier mal der Code :

    Private Sub Command1_Click()
    Dim Zeile As String
    Dim Nr As Integer


    Nr = FreeFile

    Open "C:\Test.txt" For Input As #Nr

    Line Input #Nr, Zeile
    If InStr(1, Zeile, "Test") Then
    MsgBox "Hallo", , "Test"
    End If

    Close #Nr
    End Sub
     

  5. #5
    Avatar von dignsag
    dignsag dignsag ist offline Mitglied Brokat
    Registriert seit
    Nov 2004
    Ort
    Hirsau (BW)
    Beiträge
    261
    Dein Problem ist, du brauchst wie beim Obigen Code eine Schleife um deinen Line Input Befehl! Mit dem InStr hat das nix zu tun! Das obige beispiel ist gut, weil er die Schleife so lange durchführt bis du am Ende der Textdatei angelangt bist.
    Versuchs mal mit der Schleife oben!
     
    Der Weg ist das Ziel!

  6. #6
    schwendes schwendes ist offline Rookie
    Registriert seit
    Sep 2005
    Beiträge
    6
    Hey danke für die prompte Antwort, dachte das hat was damit zu tun.

    So hab jetz den neuen Code. Dieser funtzt auch einwandfrei. Nur eine
    kleine Frage wäre da noch, ist es möglich mehrer Zeilen zu prüfen.
    Ob zum Beispiel Test1 und Test2 vorhanden sind und erst dann die
    MsgBox ausgegeben wird. Wenn ja welche Änderungen müsste ich
    dann am Code vornehmen. Ich danke schonmal im voraus.

    So hier mal der aktuelle Code :

    Private Sub Command1_Click()
    Dim Zeile As String
    Dim Nr As Integer
    Dim Nr2 As Integer

    Nr = FreeFile

    Open "C:\Test.txt" For Input As #Nr

    Nr2 = FreeFile

    While Not EOF(Nr)
    Line Input #Nr, Zeile
    If InStr(1, Zeile, "Test") Then
    MsgBox "Isch do !", , "BOX"
    End If
    Wend

    Close #Nr

    End Sub
     

  7. #7
    Avatar von dignsag
    dignsag dignsag ist offline Mitglied Brokat
    Registriert seit
    Nov 2004
    Ort
    Hirsau (BW)
    Beiträge
    261
    Dann müsstest du die Zeile

    If InStr(1, Zeile, "Test") Then

    durch

    If InStr(1, Zeile, "Test1") and InStr(1, Zeile, "Test2") Then

    ersetzen
     
    Der Weg ist das Ziel!

  8. #8
    schwendes schwendes ist offline Rookie
    Registriert seit
    Sep 2005
    Beiträge
    6
    Sorry, hat leider doch noch nicht ganz geklaptt. Er bring mir
    zwar keinen Fehler, jedoch scheint er trotzdem nur eines
    der Wörter zu prüfen.

    Private Sub Command1_Click()
    Dim Zeile As String
    Dim Nr As Integer
    Dim Nr2 As Integer

    Nr = FreeFile

    Open "C:\Test.txt" For Input As #Nr

    Nr2 = FreeFile

    While Not EOF(Nr)
    Line Input #Nr, Zeile
    If InStr(1, Zeile, "Test") And InStr(1, Zeile, "Test2") Then
    MsgBox "Isch do !", , "BOX"
    End If
    Wend

    Close #Nr

    End Sub
    Geändert von schwendes (27.09.05 um 14:37 Uhr)
     

  9. #9
    Avatar von dignsag
    dignsag dignsag ist offline Mitglied Brokat
    Registriert seit
    Nov 2004
    Ort
    Hirsau (BW)
    Beiträge
    261
    Dann probiers mal statt so:

    If InStr(1, Zeile, "Test") And InStr(1, Zeile, "Test2") Then

    So:

    If InStr(1, Zeile, "Test") > 0 And InStr(1, Zeile, "Test2") > 0 Then
     
    Der Weg ist das Ziel!

  10. #10
    schwendes schwendes ist offline Rookie
    Registriert seit
    Sep 2005
    Beiträge
    6
    Leider auch net...
     

  11. #11
    Avatar von wincnc
    wincnc wincnc ist offline Mitglied Platin
    Registriert seit
    Aug 2004
    Beiträge
    632
    Hallo, so wie Du das prüfst muss "Unterschiedlich : 0" und "Bytes : 1" in einer Zeile stehen. Das ist wahrscheinlich nicht der Fall und deshalb bekommst Du ein falsches Ergebnis.

    Versuch´s mal so:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    Dim Text As String
    Dim Nr As Integer
     
    Nr = FreeFile
     
    Open "D:\Test.txt" For Binary As #Nr
      Text = Space(LOF(Nr))
      Get #Nr, , Text
    Close #Nr
     
    If InStr(1, Text, "Unterschiedlich : 0") And InStr(1, Text, "Bytes : 1") Then
      MsgBox "Sicherung OK !", , "BOX"
    Else
      MsgBox "Sicherung nicht OK", , "BOX"
    End If
     

  12. #12
    schwendes schwendes ist offline Rookie
    Registriert seit
    Sep 2005
    Beiträge
    6
    Hi win,

    danke für die schnelle Antwort. Hab mal das ganze auf deine Weise
    angepasst, jedoch geht es leider immer nocht nicht. Das einzige
    was er jetzt richtig macht ist das er die MSG Box "Sicherung nicht
    ok" richtig ausgibt. Und du hast recht, die 2 Wörte stehen in der Textdatei
    nicht in einer Zeile, sondern sind im Text verteilt.

    Hoffe du hast vieleicht noch nen heißen Tip.
     

  13. #13
    schwendes schwendes ist offline Rookie
    Registriert seit
    Sep 2005
    Beiträge
    6
    Hi win,

    hab den Fehler gefunden. Die beiden Wörter standen im Text in
    der falschen Reihenfolge. Jetzt geht es.

    Danke nochmals
     

Ähnliche Themen

  1. Antworten: 3
    Letzter Beitrag: 10.12.08, 12:01
  2. Nur ein teil einer Textdatei einlesen.
    Von solae im Forum Visual Basic 6.0
    Antworten: 13
    Letzter Beitrag: 09.04.07, 22:32
  3. Antworten: 2
    Letzter Beitrag: 02.08.06, 15:51
  4. Antworten: 3
    Letzter Beitrag: 24.05.04, 18:43
  5. Teil einer URL auslesen
    Von low-group im Forum PHP
    Antworten: 4
    Letzter Beitrag: 20.02.04, 19:12