|
| Autor |
Nachricht |
kra_ 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 »

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


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

Anmeldedatum: 07.03.2007 Beiträge: 1248
|
Verfasst am: 18.03.2007, 21:08 |
|
|
Damit die Runde komplett ist, post ich auch noch was.
| 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


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 
 |
|
| |
|
 |
Viktor « Webmaster »

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
WObei TheCoders am aufwendigsten ist. |
|
| |
|
 |
ZiG_ Ü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.  Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde) |
|
| |
|
 |
TheCoder_ Ü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

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

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!
Ich glaub nicht, das ihr einen schnelleren code zusammenbekommt. Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde) |
|
| |
|
 |
kra_ 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

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


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 
 |
|
| |
|
 |