Visual Basic Forum

Visual Basic Forum
für VB6 und VB.NET Programmierer
 
RegistrierenRegistrieren  LoginLogin
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten
Autor
Nachricht
kra_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 18.03.2007
Beiträge: 22

ip-filter
Verfasst am: 18.03.2007, 20:22

hi leute ich brauche mal eure hilfe undzwar versuche ich gerade aus einer textfile die ip's ine eine textbox auszugeben.

mein problem ist ich weiß nicht wie ich nur die ips in die textbox bekomm!

So sieht zb eine zeile des textfiles aus:
[195.208.8.25]: MYSQL Version: 4.1.22-log

bis jetzt hab ich es immer so gemacht das ich den inhalt des textfiles in die textbox1 eingeben hab und er soll es dann in die textbox2 gefiltert ausgeben.


ich bekomm es immer nur so hin das die zeile so aussieht:
[195.208.8.25

aber ich bekomm das dumme " [ " am anfang der ip nicht weg.

hoffe ihr könnt mir helfen.

hier mein quellcode:
Code:

Private Sub Command1_Click()
Dim sName As String
sName = Text1.Text

Dim lPos As Long

lPos = InStr(sName, " ")
sNachname = Left(sName, lPos - 3)

Text2.Text = sNachname
End Sub
 
Viktor
« Webmaster »<b><font color=red>« Webmaster »</fo



Anmeldedatum: 08.12.2006
Beiträge: 354
Wohnort: Berlin


Verfasst am: 18.03.2007, 21:02

Hmm sry ist eine sehr schlechte Methode, aber mit 2 Splits gehts ^^

Code:
Private Sub Command1_Click()
Dim data As String
Dim StrNew() As String
Dim StrNew2() As String

data = "[195.208.8.25]: MYSQL Version: 4.1.22-log"

StrNew = Split(data, "[")

StrNew2 = Split(StrNew(1), "]")

Text1.Text = StrNew2(0)

End Sub
 
TheCoder_
Überflieger
Überflieger



Anmeldedatum: 31.12.2006
Beiträge: 359
Wohnort: Essen


Verfasst am: 18.03.2007, 21:03

ah hey. wollte dir eig. in hs antworten aber das is leider down -.-
ich weiß nich ob die ip immer gleich lang is aber hoffe mal du schaust hier durch:
http://uploaded.to/?id=ffkxx5

hoffe ich konnte dir helfen ^^
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 18.03.2007, 21:08

Damit die Runde komplett ist, post ich auch noch was. Wink

Code:

Private Sub Command1_Click()
Text2.Text = Mid$(Text1.Text, 2, (InStr(2, Text1.Text, "]") - 2))
End Sub

Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)


Zuletzt bearbeitet von ZiG_ am 18.03.2007, 21:16, insgesamt einmal bearbeitet
 
TheCoder_
Überflieger
Überflieger



Anmeldedatum: 31.12.2006
Beiträge: 359
Wohnort: Essen


Verfasst am: 18.03.2007, 21:09

ich glaub mein is nich gerade die beste von denen hier aba funktioniert doch auch bis auf die länge Sad
 
Viktor
« Webmaster »<b><font color=red>« Webmaster »</fo



Anmeldedatum: 08.12.2006
Beiträge: 354
Wohnort: Berlin


Verfasst am: 18.03.2007, 21:11

Da sieht man mal wieder wieviele unterschiedliche Arten es gibt ein Problem zu lösen Laughing
WObei TheCoders am aufwendigsten ist.
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 18.03.2007, 21:17

So. Ich hab meinen Code nochmal verbessert.
Ich denke ich hab die Challenge gewonnen. Laughing
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
TheCoder_
Überflieger
Überflieger



Anmeldedatum: 31.12.2006
Beiträge: 359
Wohnort: Essen


Verfasst am: 18.03.2007, 21:32

veränder in meinem projekt die schleife in der COmmand2 sub einfach so
Code:

On Error Resume Next
  For i = 0 To UBound(einzelnezeilen)
     Text3.Text = Text3.Text & Mid$(einzelnezeilen(i), 2, (InStr(2, einzelnezeilen(i), "]") - 2)) & vbCrLf
     'Text3.Text = Text3.Text & Mid(einzelnezeilen(i), 2, 12) & vbCrLf
  Next i

oO die zeilen verutschen hier im board etwas aber passt schon. dann haste nen fertigen ip filter ^^
 
kra_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 18.03.2007
Beiträge: 22


Verfasst am: 18.03.2007, 22:39

vielen dank für eure hilfe hat mir sehr geholfen. Aber ein problem gibt es noch, es kann sein das ip's doppelt sind.

jetzt ist meine frage wie kann die doppelten ips rauswerfen?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 19.03.2007, 01:20

Also so würde ich es lösen.
Hab den code kommentiert.
Hoffe es ist soweit verständlich.

Ich hab eine txt Datei zum testen als string in den code geschrieben.
Du solltest das über das Steuerelement "CommonDialog" lösen.

Es werden alle Zeilen aus der Datei in ein Array eingelesen, und die Zeilen werden auch gezählt.
Dann werden die IP's rausgesucht, mit allen anderen in einem neuen Array verglichen und wenn sie nicht schon vorhanden sind, werden sie dort eingefügt..
Zum Schluß werden die IP's noch in eine Listbox eingetragen.

Zusätzlich hab ich noch einen code zum testen der Geschwindigkeit eingebaut.
Im Label1 kannst du die Zeit am Ende sehen.

Code:

Option Explicit
Option Base 1

Private Declare Function GetTickCount Lib "kernel32" () As Long
Private start As Long, ende As Long

Private Sub Command1_Click()
On Error Resume Next
Dim i As Long, x As Long, Anzahl As Long
Dim IpArray() As String, zeilen() As String, buffer As String
Dim check As Boolean

Anzahl = 0

Open "C:\a.txt" For Input As #1 'Öffnet deine Datei

start = GetTickCount 'Startzeit merken
Do
 Anzahl = (Anzahl + 1) 'Zeilenanzahl wir um eins erhöht
 ReDim Preserve zeilen(Anzahl) 'zeilen array wird neu dimensioniert
 Line Input #1, zeilen(Anzahl) 'zeile wird in zeilen array eingelesen
Loop Until EOF(1)
Close ' Datei wird geschloßen

ReDim IpArray(Anzahl) 'Array für IP's wird neu dimensioniert
For i = 1 To Anzahl
 'Ip wird aus dem String ausgeschnitten
 buffer = Mid$(zeilen(i), 2, (InStr(2, zeilen(i), "]") - 2))
 For x = 1 To Anzahl
  'Es wird überprüft, ob die IP schon vorhanden ist
  If StrComp(IpArray(x), buffer, vbTextCompare) = 0 Then
   check = False
   Exit For
  Else
   check = True
  End If
 Next x
 'Wenn noch nicht vorhanden, dann wird die IP ins IPArray geschrieben
 If check Then IpArray(i) = buffer
Next i

List1.Visible = False
For i = 1 To Anzahl
 'Nur Strings <> 0 werden in die Liste eingefügt
 If Len(IpArray(i)) <> 0 Then List1.AddItem (IpArray(i))
Next i
List1.Visible = True

ende = GetTickCount 'Zeit stoppen
Label1.Caption = (ende - start) / 1000 'Zeitdifferenz berechnen und ausgeben
End Sub



@enco and thecoder

Beat this!
Wink

Ich glaub nicht, das ihr einen schnelleren code zusammenbekommt.Wink
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
kra_
Tutorial Leser
Tutorial Leser

Anmeldedatum: 18.03.2007
Beiträge: 22


Verfasst am: 19.03.2007, 07:05

gut gemacht zig

nur wäre es gut wenn es die ip's in ne text box geschrieben werden. Oder die list listbox wird gespeichert. mit der listboxspeichern hab ich schon versucht aber wenn ich in das text file reinschau sind vor und hinter den ips "anführungszeichen" die müssten dann auch wieder weg.
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 19.03.2007, 12:56

Hier ein code zum auslesen der Listbox und speichern in eine Datei.

Code:

Open "C:\IP.txt" For Output As #1
For i = (List1.ListCount - 1) To 0 Step -1
 List1.ListIndex = i
 Print #1, List1.Text
Next i
Close


ZiG
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
TheCoder_
Überflieger
Überflieger



Anmeldedatum: 31.12.2006
Beiträge: 359
Wohnort: Essen


Verfasst am: 19.03.2007, 15:27


Ok zig hat dann mal gewonnen -.-
dafür war meins ein fertiges Programm Very Happy
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: text, ips

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Von Anfang an... 404 30.11.2002, 15:34
Keine neuen Beiträge Der Anfang mit VB 596 03.03.2008, 20:39
Keine neuen Beiträge am ende oder anfang einer zeile 513 17.02.2008, 18:22
Keine neuen Beiträge [VB] suche hilfe beim 1. projekt 858 02.04.2007, 01:39
Keine neuen Beiträge Kurze Frage (noch sehr am anfang) 706 28.03.2007, 23:40
 


[ Time: 0.1536s ][ Queries: 118 (0.0816s) ][ GZIP on - Debug on ]