mwichmann Geschrieben 27. August 2002 Teilen Geschrieben 27. August 2002 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! Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
mwichmann Geschrieben 27. August 2002 Autor Teilen Geschrieben 27. August 2002 hab vergessen zu schreiben das ich Visual Basic programmiere Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
progmaker Geschrieben 28. August 2002 Teilen Geschrieben 28. August 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.