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
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425

Existiert ein String im String
Verfasst am: 15.02.2008, 21:20

Weiß jemand, wie ich testen kann, ob ein String in einem String existiert?
Hatte mir da schon mal was zusammengeproggt, was aber nur über On Error lief.
Kennt jemand eine bessere Möglichkeit?

mfg Orbz
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 21:26

If Instr(1, string, "Gesuchter Text") <> 0 then
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 21:42

Danke. Ich habe nur noch ein Problem. In meinem String kommt das Zeichen " vor. So klappt das ganze nicht. Der String liegt in einer Datei. Kann ich das Zeichen vielleicht vor dem Einlesen entfernen? Über API, oder so?
 
seraph1n_
Coder
Coder

Anmeldedatum: 06.01.2008
Beiträge: 93
Wohnort: aaaaaaaaa Level: 1337


Verfasst am: 15.02.2008, 21:47

ich glaube ' " ' = ' "" '... sollte doch funktionieren, oder hab ich etwas falsch verstanden?

the_gam3r hat Folgendes geschrieben:
scheisse stimmt, muss noch besser vb lernen^^

tr4st hat Folgendes geschrieben:
Du solltest überhaupt mal VB lernen.
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 21:49

Nein, ich meine " nicht '.
^^

Funktioniert InStr auch bei Multiline Strings?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 21:52

Ja tut es. Ist ja einfach nur ein langer String^^

Beim suchen einfach " doppelt schreiben oder mit Chr().
Ersetzen kannst du sie mit "Replace()".
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
seraph1n_
Coder
Coder

Anmeldedatum: 06.01.2008
Beiträge: 93
Wohnort: aaaaaaaaa Level: 1337


Verfasst am: 15.02.2008, 22:01

ich miente das, was zig sagte, nur das
Code:
'
mir dabei als Anführungszeichen diente, da es sonst ein bisschen verwirrend wirken würde. naja, das tat es ja auch so. ^^

the_gam3r hat Folgendes geschrieben:
scheisse stimmt, muss noch besser vb lernen^^

tr4st hat Folgendes geschrieben:
Du solltest überhaupt mal VB lernen.
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 22:02

Argh warum funktioniert das nicht? Ich lese die Owner.mdb aus, in der das ICQ Passwort gespeichert ist. Ich suche nach der Zeile, in der "S t o r e d P a s s w o r d" vorkommt.

Code:
Open DateiPfad For Input As #1
Do
Input #1, MyLine
MyLine = Replace(MyLine, Chr(132), "'")
If InStr(1, MyLine, "S t o r e d P a s s w o r d") <> 0 Then
Found = True
End If
Loop Until EOF(1)
Close #1

If Found = True Then
MsgBox MyLine
Else
MsgBox "Der String wurde nicht gefunden!"
End If

Müsste doch eigentlich funktionieren, oder?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 22:15

Und was funktioniert nicht?
Ich würde zwar so manches anders coden, aber im Grunde sollte es glaube ich gehen^^
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 22:19

Es geht aber nicht.
^^
Found steht am Ende auf False, obwohl der String in der Datei vorhanden ist.
Wäre nett, wenn du mir verraten könntest, was du anders machen würdest.
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 22:34

Eine Möglichkeit.
Code:

Dim Dateipfad as string
Dim Found as Boolean
Dim MyLine as string
Dim ff as Integer

Dateipfad = "Pfad"
Found = False
ff = FreeFile

Open DateiPfad For Input As #ff
Do Until EOF(ff)
Line Input #ff, MyLine
MyLine = Replace(MyLine, Chr(132), "'")
If InStr(1, LCase$(MyLine), LCase$("S t o r e d P a s s w o r d)") <> 0 Then
 Found = True
 Exit do
End If
Loop
Close #ff

If Found Then
 MsgBox MyLine
Else
 MsgBox "Der String wurde nicht gefunden!"
End If


Andere Möglichkeit wäre einfach die Datei in einen string laden und so per Instr die Datei aufeinmal zu durchsuchen.
Man könnte auch per Replace einfach den gesuchten string ersetzen und überprüfen ob sich die Größe des String verkleinert hat.
Somit sollte es ja wohl auch drinn sein.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 23:10

Hm, ich kann den String ja schlecht ersetzen, wenn er nicht mal gefunden wird.
Mit deinem Code klappt es auch nicht besser.
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 23:12

Also wenn ich ne Testdatei erstelle, dann findet er den String auch.

Debuggen soll ja Wunder wirken bei solchen Problemen.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 23:27

Ja, mit einer kleineren Datei funktioniert es.
Ist wohl zu groß das Ding. Kann ich das evtl. fixen?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 23:41

Also wenn du die Datei zeilenweise einliest, dann kann es eigentlich nicht zu groß sein.
Es wird nur länger dauern.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 23:44

Eine Pause in einer Schleife?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 23:47

Ein DoEvents sollte noch rein. Hast recht.
Sonst würde es beim Zeilen einlesen einfrieren.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 15.02.2008, 23:51

DoEvents habe ich schon probiert. Hat auch nicht funktioniert.
Gibt es nicht etwas schnelleres als InStr?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 15.02.2008, 23:58

Also sorry, aber ich weiß echt nicht was du für Probs hast.^^
Wie groß kann denn die scheiß Datei schon sein?

Bei SQLRIP hab ichs mit viel größeren files zu tun.

Edit//
Wenn es dir nur zu langsam ist, dann solltest du nicht jede Zeile einzeln überprüfen ob der gesuchte Text drinnen steht.
Hab ja schon gesagt. Ganze Datei laden und durchsuchen.
Außer die Datei ist wirklich sehr groß.
Ich sag mal bis 100MB könnte noch verschmerzbar sein.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 16.02.2008, 00:09

Sehr groß ist sie ja nicht. Das finde ich ja so seltsam. Sind nur lächerliche 280kb.
Was mein Problem ist weiß ich nicht. Deshalb poste ich ja hier.
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 16.02.2008, 11:00

Wie schwer kann es sein das Programm zu debuggen und zu schauen was genau passiert?
Wahrscheinlich suchst du iwie nach den falschen string.
Oder der string hat ein anderes Format.

Ich hab die Datei nicht zum testen da, sonst hätte ich dir schon längst die Lösung gegeben.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 16.02.2008, 11:36

Ok, ich hab die Datei mal Zeile für Zeile in eine TextBox eingelesen.
Das tut er nicht so richtig. Nach 2 Zeilen ist da Schluss.

Aus irgendeinem Grund hat VB Probleme mit der Datei. Hab sie jetzt mal hochgeladen. Hoffentlich kann jetzt jemand helfen. http://rapidshare.com/files/92291028/Owner.mdb
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 16.02.2008, 11:41

Ich kann dir so ziemlich jetzt schon sagen warum das so ist.
Das ist ja keine Textdatei mit Zeilenumbrüchen, also kann er auch nicht Zeilenweise auslesen.

Ich sehs mir mal genauer an und poste dann nen source.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 16.02.2008, 11:41

Ach so. Hab ich mir auch gerade gedacht. Der Zeilenumbruch entsteht nur durch die Länge der Zeilen, oder?
 
ZiG_
Überflieger
Überflieger

Anmeldedatum: 07.03.2007
Beiträge: 1248


Verfasst am: 16.02.2008, 12:04

Code:

Option Explicit

Private Sub Command1_Click()
Dim Dateipfad As String
Dim MyFile As String
Dim ff As Integer
Dim pos As Long

Dateipfad = App.Path & "\Owner.mdb"
ff = FreeFile

Open Dateipfad For Binary As #ff

MyFile = Space(LOF(ff))
Get #ff, , MyFile

MyFile = Replace(MyFile, Chr(0), "")
MyFile = Replace(MyFile, Chr(132), "'")

pos = InStr(1, MyFile, "StoredPassword")
If pos <> 0 Then
 MsgBox pos
Else
 MsgBox "Der String wurde nicht gefunden!"
End If
Close #ff

End Sub


So sollte es gehen.
Er gibt dir die Position zurück.

Wenn man sich die Datei per wordpad ansieht, dann sieht man sehr viele Quadrate(Chr(0)).
Die musste ich vorher entfernen, damit er nach dem string richtig suchen kann.
Hoffe es passt jetzt so.
Wer nicht auf seine Weise denkt, denkt überhaupt nicht. (Oscar Wilde)
 
c0re_
« Moderator »<b><font color=green>« Moderator »</font



Anmeldedatum: 29.11.2007
Beiträge: 425


Verfasst am: 16.02.2008, 12:34


Funktioniert super, danke. Habs einfach falsch angesetzt gehabt. =(
 
Neues Thema eröffnen   Neue Antwort erstellen    Visual Basic Forum Foren-Übersicht -> [VB6] Fragen - Antworten

Tags: string

 
 Verwandte Themen   Aufrufe   Letzter Beitrag 
Keine neuen Beiträge Weiß nicht was ich Coden soll. 1395 21.04.2008, 16:39
Keine neuen Beiträge Verbindung Testen per ws? 501 18.02.2008, 21:46
Keine neuen Beiträge String Manipulation 397 16.08.2007, 14:17
Keine neuen Beiträge Read a String into a buffer 497 05.08.2007, 09:40
Keine neuen Beiträge String nach ":" trennen? 527 12.04.2007, 16:22
 


[ Time: 0.1631s ][ Queries: 155 (0.0968s) ][ GZIP on - Debug on ]