Ganze Zeile durchsuchen

Hallo,
ich Lese eine Text Datei Zeilenweise aus, dabei würde ich aber gern einen Filter verwenden. Also wenn ich in ein Textfeld ein WOrt schreibe soll jede Zeile ausgegeben werden die dieses Wort enthält.
Bis jetzt habe ich immer die ersten 9 Stellen durchsucht. Die Zeilen haben aber unsterschiedlche länge.
mfg jonny

 ff = FreeFile
 n = 0
 Open "d:\CTDI.txt" For Input As #ff
 While Not EOF(ff)
 Line Input #ff, textvar
 If Left(textvar, 9) = Text1.Text Then
 List1.Additem textvar
 End If
 n = n + 1
 Wend
 Close #ff

Hallo Joe,

das was du suchst ist die Function Instr :wink:
Ersetze die zeile

If Left(textvar, 9) = Text1.Text 

durch

If Instr(textvar,text1.text,vbtextcompare)\>0 then

dann sollte es klappen :wink:

MfG

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

hmmm
Type mismatch sobald ich in Text1.text einen Buchstaben oder Zahl eingebe :confused:

mfg joe

Hallo Joe,

das was du suchst ist die Function Instr :wink:
Ersetze die zeile

If Left(textvar, 9) = Text1.Text

durch

If Instr(textvar,text1.text,vbtextcompare)>0 then

dann sollte es klappen :wink:

MfG

So muss es aussehen.
If InStr(LCase(textvar), LCase(Text1.Text)) Then

Danke.

Sorry Joe, da hat es doch glatt die 1 weggelutscht :s

Richtig muss es lauten

 If InStr(1, textvar, text1.Text, vbTextCompare) \> 0 Then

Im Zweifelsfall Instr eingeben und F1 druecken :wink:

MfG

So muss es aussehen.
If InStr(LCase(textvar), LCase(Text1.Text)) Then

Danke.

Hallo Joe, gib mal noch die 1 an. Das bedeutet das er ab der 1 Stelle sucht. Desweiteren kannst du als 3 Parameter welcher vbTextcompare ist, angeben wie er suchen soll! ein a ist nicht gleich ein A !

MfG Alex

Hallo Alex,
Wie meinst du das :?

ein a ist
nicht gleich ein A !

Was ich noch brauche ist eine IF Anweisung die Prüft ob Text1.Text grösser als 2 Zeichen ist bevor er die Text Datei scannt.
damit er nicht schon beim eingeben von einem a oder au alle 1000 einträge durchklappert.

Danke dir mfg joe

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Alex,

Hallo Joe,

Wie meinst du das :?

ein a ist
nicht gleich ein A !

Jedem Buchstaben ist eine Zahl zugeordnet. Das a hat die Zahl 97, dagegen das A den wert 65! Die Grossbuchstaben sind immer 32 kleiner :wink:

Wenn du nun ein Vergleich startest und abfragst if a=A bekommst du False zurueckgeliefert. Das waere ja das selbe als wenn du abfragen würdest if 97=65 !
Bei der Instr Function kannst du als letzten Parameter die Vergleichsart festlegen.

Dazu hast du 3 Optionen mit folgender Bedeutung

vbBinaryCompare =Führt einen binären Vergleich durch.
vbDatabaseCompare=Nur Microsoft Access. Führt einen Vergleich durch, der auf Informationen in einer Datenbank basiert.
vbTextCompare=Führt einen Textvergleich durch.

Als Beipiel

instr(1,"Hallo","h",vbBinaryCompare)-\> Wird nicht gefunden da binaer verglichen wird
instr(1,"Hallo","h",vbTextCompare) -\> Wird gefunden da auf textbasis verglichen wird

Binaerer Vergleich. Es werden die Ordinalzahlen vom Zeichen verglichen. Und da dort nicht das a(97) A(65) ist wird nichts gefunden.

TextVergleich. Hierbei macht er keine Unterschiede. In dem Falle ist ein a=A

Was ich noch brauche ist eine IF Anweisung die Prüft ob
Text1.Text grösser als 2 Zeichen ist bevor er die Text Datei
scannt.

if len(text1.text)0 then ...
end if

damit er nicht schon beim eingeben von einem a oder au alle
1000 einträge durchklappert.

Danke dir mfg joe

Nichts zu danken :wink:

So muss es aussehen.
If InStr(LCase(textvar), LCase(Text1.Text)) Then

Du kannst natuerlich auch als Argumente die Daten alle in kleinbuchstaben wandeln :smile:

Danke.

MfG Alex

Hallo Alex,
Genau so hatte ich mir das forgestellt :stuck_out_tongue:
Danke. Es läuft…

mfg Joe

Hallo Joe,

Wie meinst du das :?

ein a ist
nicht gleich ein A !

Jedem Buchstaben ist eine Zahl zugeordnet. Das a hat die Zahl
97, dagegen das A den wert 65! Die Grossbuchstaben sind immer
32 kleiner :wink:

Wenn du nun ein Vergleich startest und abfragst if a=A
bekommst du False zurueckgeliefert. Das waere ja das selbe als
wenn du abfragen würdest if 97=65 !
Bei der Instr Function kannst du als letzten Parameter die
Vergleichsart festlegen.

Dazu hast du 3 Optionen mit folgender Bedeutung

vbBinaryCompare =Führt einen binären Vergleich durch.
vbDatabaseCompare=Nur Microsoft Access. Führt einen Vergleich
durch, der auf Informationen in einer Datenbank basiert.
vbTextCompare=Führt einen Textvergleich durch.

Als Beipiel

instr(1,„Hallo“,„h“,vbBinaryCompare)-> Wird nicht gefunden
da binaer verglichen wird
instr(1,„Hallo“,„h“,vbTextCompare) -> Wird gefunden da auf
textbasis verglichen wird

Binaerer Vergleich. Es werden die Ordinalzahlen vom Zeichen
verglichen. Und da dort nicht das a(97) A(65) ist
wird nichts gefunden.

TextVergleich. Hierbei macht er keine Unterschiede. In dem
Falle ist ein a=A

Was ich noch brauche ist eine IF Anweisung die Prüft ob
Text1.Text grösser als 2 Zeichen ist bevor er die Text Datei
scannt.

if len(text1.text)0 then …
end if

damit er nicht schon beim eingeben von einem a oder au alle
1000 einträge durchklappert.

Danke dir mfg joe

Nichts zu danken :wink:

So muss es aussehen.
If InStr(LCase(textvar), LCase(Text1.Text)) Then

Du kannst natuerlich auch als Argumente die Daten alle in
kleinbuchstaben wandeln :smile:

Danke.

MfG Alex