vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Erstellen von dynamischen Kontextmen?s - wann immer Sie sie brauchen!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
Wert übergeben 
Autor: Revolveruser
Datum: 05.06.08 10:32

Hi

Irgendwie stelle ich mich nicht gerade clever an.
Kann mir bitte jemand helfen???

Ich habe einen Form "Dateneingabe".
In dieser füge ich einen Link auf eine Datei ein.
Diesen Link bzw. die Datei die dahinter steht, möchte ich durchsuchen.

Private Sub Suche_Click()
    Dim lngPos As Long
    Forms!Dateneingabe.Attachment = Me.Attachment
 
 
        'Zu durchsuchende Datei und Suchtext!!!!!!!!!!!
        lngPos = SearchFileForText("?????????", "Suchtext")
    If lngPos > 0 Then
        MsgBox "Gefunden an Position " & CStr(lngPos)
    Else
        MsgBox "Suchtext nicht gefunden!" & CStr(Me.Attachment)
    End If
End Sub
Die Suche sieht dann folgendermassen aus:

Option Compare Database
 
' Durchsucht eine Datei nach einem bestimmten Text
' und gibt die Position der Fundstelle zurück,
' bzw. den Wert 0, wenn der Text nicht gefunden wurde
Public Function SearchFileForText(ByVal sFile As String, _
  ByVal sText As String, _
  Optional ByVal lngStart As Long = 1) As Long
 
  Dim F As Integer
  Dim lngStrLen As Long
  Dim lngFound As Long
  Dim lngFileSize As Long
  Dim lngFilePos As Long
  Dim lngReadSize As Long
  Dim sTemp As String
  Dim sPrev As String
  Dim intProz As Integer
 
  ' Größe eines einzelnen einzulesenden Datenblocks
  Const lngBlockSize = 4096
 
  ' Länge des gesuchten Textes
  lngStrLen = Len(sText)
 
  ' Falls die Datei gar nicht existiert, oder der
  ' kein Suchtext angegeben wurde, wird die Funktion
  ' hier verlassen
  If Dir$(sFile) = "" Or lngStrLen = 0 Then Exit Function
 
  ' Datei im Binärmodus öffnen
  F = FreeFile
  Open sFile For Binary As #F
 
  ' Größe der Datei
  lngFileSize = LOF(F)
 
  ' Start-Position
  If lngStart > 1 Then
    Seek #F, lngStart
    lngFilePos = lngStart - 1
  End If
 
  ' Solange "blockweise" einlesen, bis entweder das
  ' Dateiende erreicht oder der Text gefunden wurde
  While lngFilePos < lngFileSize And lngFound = 0
 
    If lngFilePos + lngBlockSize > lngFileSize Then
      ' Falls aktuelle Position + Blockgröße über das
      ' Dateiende hinaus geht -> Blockgröße neu festlegen
      ' (maximal bis Dateiende)
      lngReadSize = lngFileSize - lngFilePos
    Else
      ' ansonsten: festgelegte Blockgröße einlesen
      lngReadSize = lngBlockSize
    End If
 
    ' Variable vorbereiten (mit Leerzeichen füllen)
    sTemp = Space$(lngReadSize)
 
    ' Datenblock einlesen (Größe = lngReadSize)
    Get #F, , sTemp
 
    ' die letzten Zeichen des vorigen Blocks nochmals
    ' mit in den Suchvorgang einbeziehen, denn es
    ' könnte ja sein, dass sich der gesuchte Text
    ' genau an zwischen dem letzten und dem aktuell
    ' eingelesenen Block befindet
    sTemp = sPrev + sTemp
 
    ' Ist der gesuchte Text enthalten?
    lngFound = InStr(sTemp, sText)
    If lngFound > 0 Then
      ' JA, Suchtext ist enthalten!
      ' Position ermitteln
      lngFound = lngFilePos + lngFound - lngStrLen
    End If
 
    ' aktuelle Position aktualisieren
    lngFilePos = lngFilePos + lngReadSize
 
'    ' Fortschritt anzeigen
'    intProz = Int(lngFilePos / lngFileSize * 100 + 0.5)
'    lblStatus.Caption = "Suche läuft... " & CStr(intProz) & "%"
'    DoEvents
'
'    sPrev = Right$(sTemp, lngStrLen)
  Wend
 
'  ' nachfolgender Code nur zu Testzwecken
'  ' (einfach später dann auskommentieren)
'  If lngFound > 0 Then
'    sTemp = Space$(lngStrLen)
'    Seek #F, lngFound
'    Get #F, , sTemp
'    Debug.Print sTemp
'  End If
 
  ' Datei schliessen
  Close #F
 
  ' Funktionsrückgabewert: Fundstelle (Position)
  SearchFileForText = lngFound
End Function

Keine Ahnung aber grosses Mundwerk.

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Wert übergeben806Revolveruser05.06.08 10:32
Re: Wert übergeben548ModeratorDieter05.06.08 10:35
Re: Wert übergeben556Revolveruser05.06.08 10:54
Re: Wert übergeben542ModeratorDieter05.06.08 11:21
Re: Wert übergeben510Revolveruser05.06.08 11:42
Re: Wert übergeben517ModeratorDieter05.06.08 11:45
Re: Wert übergeben544Revolveruser05.06.08 11:53
Re: Wert übergeben516ModeratorDieter05.06.08 11:55
Re: Wert übergeben639Revolveruser05.06.08 12:19

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel