Zum Inhalt springen

suchen in Textdatein


mwichmann

Empfohlene Beiträge

Hallo,

ich habe zwei Problem.

1.Ich durchsuche Textdatein nach bestimmten Begriffen.

Meine Suche unterscheidet aber noch zwischen Groß-und Kleinschreibung.Und

das soll sie nicht machen.

Hier mal der Cosde für meine Suche:

Private Sub suche_Click()

Dim x&, Zeilen() As String, FName$

MousePointer = vbHourglass

FName = "c:\archiv\datensicherung.txt"

List1.Clear

Label10.Caption = ""

Label10.Refresh

'Die letzten beiden Parameter geben das linke und rechte

'Begrenzungszeichen einer Zeile an, dies können auch

'mehrere sein. Hier wurde für links vbLf (chr$(10)) und

'für rechts vbCr (chr$(13)) gewählt

If FindTerm(FName, Text7.Text, Zeilen, vbLf, vbCr) Then

List1.Visible = False

DoEvents

For x = 0 To UBound(Zeilen) - 1

If x < 32736 Then

List1.AddItem Zeilen(x)

Else

MsgBox ("ListBox kann nicht mehr Einträge fassen!")

Exit For

End If

Next x

List1.Visible = True

Else

MsgBox ("Suchbegriff nicht vorhanden!")

End If

Label10.Caption = UBound(Zeilen) & " Zeile(n) gefunden"

MousePointer = vbDefault

End Sub

Private Function FindTerm(File$, s$, ZZ$(), tl$, tr$) As Boolean

Dim c&, f%, i&, j&, L&, lc&, p&, v&, w&

Dim a$, d$, n$, o$

'Dieser Wert gibt die Paketgröße von Get# an. Er kann beliebig

'geändert werden, sollte aber nicht kleiner als die längste

'zu erwartende Zeile des zu druchsuchenden Files sein

Const PS& = 1024&

ReDim ZZ(0)

'Prüfen ob Parameter plausibel sind

If tl$ = "" Or _

tr$ = "" Or _

s$ = "" Or _

Dir$(File, vbNormal) = "" Then

MsgBox ("Paramter stimmen nicht!")

Exit Function

End If

f = FreeFile

Open File For Binary Shared As #f

L = LOF(f)

'Anzahl der Durchläufe anhand der Dateigröße ermitteln

p = L \ PS

If L Mod PS <> 0 Then p = p + 1

'Schleife starten

For c = 1 To p

n = Space$(PS)

Get f, , n

a = o & n

i = InStr(1, a, s)

If i <> 0 Then

'Suchbegriff wurde im aktuellen Paket gefunden

lc = 0

Do

i = InStr(i, a, s)

If i <> 0 Then

'Zeilenanfang suchen

v = 1

For j = i To 1 Step -1

d = Mid$(a, j, 1)

If InStr(1, tl, d) Then

'gefunden

v = j + 1

Exit For

End If

Next j

'Zeilenende suchen

w = 0

For j = i To Len(a)

d = Mid$(a, j, 1)

If InStr(1, tr, d) Then

'gefunden

w = j - 1

Exit For

End If

Next j

If w <> 0 Then

'Zeile auschneiden und in einem Feld speichern

'Hier könnten auch weitere Suchkriterien abge-

'fragt werden.

ZZ(UBound(ZZ)) = Mid$(a, v, w - v + 1)

ReDim Preserve ZZ(0 To UBound(ZZ) + 1)

lc = w

End If

i = w

End If

'Weiter schleifen, da der Suchbegriff im Paket ja

'öfters als einmal auftauchen kann

Loop Until i = 0

If lc = 0 Then

'Suchbegriff wurde im aktuellen Paket nicht ge-

'funden. Daher ganzen String für die nächste Runde

'speichern

o = a

Else

'Ab Ende der zuletzt gefundenen Zeile des aktuel-

'len Paketes für die nächste Runde speichern

o = Mid$(a, lc)

End If

Else

'Paket der aktuellen Runde speichern

o = n

End If

Next c

Close f

If UBound(ZZ) > 0 Then FindTerm = True

End Function

Wie kann ich es mit diesem Code erreichen,dass NICHT mehr zwischen Groß-und KLeinschreibung unterschieden wird.

2.In den Textdatein sind Pfade gespeichert.

Bsp.:

CD Nr. :1

Kunde:maik

Auftrag:webseite

Erstellungsdatum:13.11.02

Dateiendung:htm

D:\

D:\

D:\video

D:\video\Adobe Premiere Vorschaudateien

D:\video\Adobe Premiere Vorschaudateien\krs-clips2.TMP

D:\video\K1-7

D:\video\K1-7\1.psd

D:\video_alt

--------------------------------------------------------------------------------------

CD Nr :2

Kunde:Karl Mustermann

Auftrag:Erstellen der Webseite für

Erstellungsdatum:12.09.2001

Dateiendung:html,htm,gif,jpeg

D:\

D:\

D:\video

D:\video\Adobe Premiere Vorschaudateien

D:\video\Adobe Premiere Vorschaudateien\krs-clips2.TMP

D:\video\K1-7

D:\video_alt

-------------------------------------------------------------------------------------------

wenn ich jetzt nach z.B. den Namen "Karl Mustermann" suche,dann würde mir die Suche ausgeben: "Kunde:Karl Mustermann"

Ich möchte aber das die Suche die "CD Nr:" noch mit ausgibt.

Wie kann ich das realisieren.

Ich weiß das dies sicherlich keine leichte Aufgabe ist.Aber ich hoffe hier kann mir trotzdem jemand helfen.

Danke für die Mühe!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dass, du in VB programmierst, hat man erkannt. Ich glaube, ich kann dir helfen. In der Routine FindTerm benutzt du die Funktion InStr. Wenn du dir in der Online-Hilfe die Parameter anguckst, die man übergeben kann, wirst du feststellen, dass man der Funktion sagen kann wie sie den Text vergleichen soll. Als Standart ist glaube ich binär eingestellt. Aber wenn du die Strings als Text vergleichst, wird Groß- und Kleinschreibung nicht berücksichtigt. Ich hoffe, dass es so funktioniert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...