Zeichenfolge in Text

server

Erfahrenes Mitglied
Hi!

Ich lese aus einer Textdatei den Inhalt in eine Listbox.
Nun möchte ich mit einer Schleife und einer If Anweisung überprüfen, ob in der Zeile 127.0.0.1 vorkommt.
Geht das?

Also das Gerüst habe ich schon, mir fehlt nur mehr die If Anweisung sozusagen.

Danke,
 
ich würds so machen:
Code:
Dim X as long
Dim Gefunden as Boolean
Gefunden = False
for X = 1 to len(List1.List(Y)) - len("127.0.0.1")
   If mid(List1.List(Y)), X, len("127.0.0.1")) = "127.0.0.1" then
      'keine Ahnung, was du jetzt machen willst...
      Gefunden = True
   End If
next
If Gefunden then
   '...
End If

Ich hab die Listbox einfach List1 genannt und Y ist der Index der Zeile in der 127.0.0.1 stehen soll
 
Hi,

Irgendwie scheitert es an der If Anweisung, er meldet Syntax Fehler:

Code:
Private Sub Command1_Click()
List2.Clear           ' löscht die 2. listbox
List1.Clear           ' löscht die 1. listbox
Shape1.FillColor = &HC000&  'ändert die Ampel auf grün
Dim F, tmp As String
Dim i As Integer
Dim c As Integer

 
 ' Einlesen der Werte (erfolgt durch den Timer jede Sekunde)
 F = FreeFile
 Open "F:\server\sambar60-1\log\access.log" For Input As #F
    While Not EOF(F) 'Bis das Ende der Datei erreicht ist.
        Line Input #F, tmp
        List1.AddItem tmp
       
      
    Wend
 Close #F



Dim add As Long
Dim X As Long
Dim Gefunden As Boolean
Gefunden = False
For X = 1 To Len(List1.List(Y)) - Len("127.0.0.1")
If mid(List1.List(Y)), X, len("127.0.0.1")) = "127.0.0.1" then add = List1.List(Y)       
End If
List2.AddItem = add
Next X
Label3 = List1.ListCount
End Sub

Danke für die Hilfe
 
Die zweite unterstrichende Klammer ist zuviel. Sie beendet die mid() - Funktion an dieser Stelle.
Code:
If mid(List1.List(Y)), X...
Oder Du nutzt einfach die InStr() - Funktion :-)



PS: Bevor hier irgendein Klugschei*** auftaucht - richtig, man kann die unterstrichende Klammer behalten und die unmittelbar davor löschen :-)
.
 
irgendwie kommt mir das was komisch vor, was du da geschrieben hast:
Meinst du da nicht so?:
Code:
Private Sub Command1_Click()
List2.Clear           ' löscht die 2. listbox
List1.Clear           ' löscht die 1. listbox
Shape1.FillColor = &HC000&  'ändert die Ampel auf grün
Dim F, tmp As String
Dim i As Integer
Dim c As Integer

 
 ' Einlesen der Werte (erfolgt durch den Timer jede Sekunde)
 F = FreeFile
 Open "F:\server\sambar60-1\log\access.log" For Input As #F
    While Not EOF(F) 'Bis das Ende der Datei erreicht ist.
        Line Input #F, tmp
        List1.AddItem tmp
       
      
    Wend
 Close #F



Dim X As Long
Dim Y as Long
Dim Gefunden As Boolean
For Y = 0 to List1.ListCount - 1
    Gefunden = False
    If wir_machens_mal_ein_freund_zuliebe Then 'ist natürlich nur quatsch
        Gefunden = (instr(1,List1.List(Y),"127.0.0.1) > 0)
    Else
        For X = 1 To Len(List1.List(Y)) - Len("127.0.0.1")
            If mid(List1.List(Y)), X, len("127.0.0.1")) = "127.0.0.1" then 
                 Gefunden = True
            End If
        Next X
    End If
    If Gefunden Then
        List2.AddItem List1.List(Y)
    End If
Next Y
Label3 = List1.ListCount
End Sub
 
Zuletzt bearbeitet:
Hi,

Erstmal danke für die Mühe!

Leider funktioniert es noch nicht ganz so, wie ich will:
Hier mein Code:
Code:
Dim add As Long
Dim X As Long
Dim Gefunden As Boolean
For X = 1 To Len(List1.List(Y)) - Len("127.0.0.1")

If Mid(List1.List(Y), X, Len("127.0.0.1")) <> "127.0.0.1" Then List2.AddItem List1.List(Y)



Next X

Der Code macht im Prinzip schon das, was er soll, nämlich alle Einträge zu überprüfen und dann in die zweite ListBox schreiben.

Nur leider schreibt er mir nur 213.er IP Adresse in die 2. Listbox.........

Hier mal ein Auszug aus meiner Datei, damit ihr wisst, wie die aussieht:

127.0.0.1 - - [07/May/2004:20:41:23 +0200] "GET /engine.php HTTP/1.1" 200 1548 90 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
127.0.0.1 - - [07/May/2004:20:41:28 +0200] "POST /forum/phpBB2/phpBB2/posting.php HTTP/1.1" 200 7758 250 "http://localhost/forum/phpBB2/phpBB2/posting.php?mode=reply&t=25" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
127.0.0.1 - - [07/May/2004:20:41:28 +0200] "GET /engine.php HTTP/1.1" 200 1548 320 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
127.0.0.1 - - [07/May/2004:20:41:30 +0200] "GET /forum/phpBB2/phpBB2/viewtopic.php?p=75 HTTP/1.1" 200 40425 140 "http://localhost/forum/phpBB2/phpBB2/posting.php" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
127.0.0.1 - - [07/May/2004:20:41:34 +0200] "GET /engine.php HTTP/1.1" 200 1548 140 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
127.0.0.1 - - [07/May/2004:20:41:39 +0200] "GET /engine.php HTTP/1.1" 200 1548 111 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
62.99.170.158 - - [07/May/2004:20:41:41 +0200] "GET / HTTP/1.1" 304 0 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"
62.99.170.158 - - [07/May/2004:20:41:42 +0200] "GET /design/design.css HTTP/1.1" 304 0 0 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322)"


Jede Zeile beginnt mit einer IPadresse und schliesst mit Windowskennzeichnung ab, wurde hier nur durch das Forum anders dargestellt.

Weil ich aber alle 5 Sekunden eine 127.0.0.1er IP Adresse habe (heisst lokal abgerufen) und ich nicht will, dass die Liste dadurch so lange wird, möchte ich sie mit einem VB Programm herauslöschen, die Datei dann in ein Archiv speichern.

Danke ;-)
 
Also wenn die IP sowieso am anfang steht brauchst du das ganz ja gar nicht in einer Schleife durchzugehen. Es müsste reichen, wenn du
Code:
If Left(List1.List(Y),len("127.0.0.1")) <> "127.0.0.1"
schreibst. Ich hab das doch richtig verstanden, dass die einträge, die mit 127.0.0.1 nicht kopiert werden sollen oder?
 
Zurück