bestimmte Stelle in einer Textdatei finden

Macmannemann

Grünschnabel
Hallo Leute!

Ich bin Anfänger in VB und stehe schon vor einem (für Euch bestimmt einfachen) Problem:
Ich möchte gerne aus einer Textdatei(shift.ini) eine bestimmte Zeile (aus 1000) finden,
die Zeile mit dem heutigen Datum(hier:04/26).
z.B.:
04/25=00:00*C;06:00*B;14:00*A
04/26=00:00*C;06:00*B;14:00*A
04/27=00:00*C;06:00*B;22:00*C
04/28=
04/29=
.
.
.

Nun soll ab dem 26.4. geprüft werden, ob 16 Tage (also bis mind.12.5.) nach dem heutigen Datum die Einträge weiter fehlen.Wenn weniger als 16 Tage Vorlauf eingetragen sind --> E-Mail an Admin generieren!
wenn mehr als 16 Tage voreingetragen sind --> alles o.k.

Bitte helft mir weiter! Für Euch ist das vielleicht eine Sache von 2 min., ich bin schon
2 Tage dran

Wenn ich es durch Euch schnell hinbekomme zeige ich mich gerne geldlich dankbar!
Für weitere Fragen stehe ich gerne zur Verfügung! (leininc@gmx.de)
Gruß Christian.
 
Zuletzt bearbeitet:
Hi Macmannemann,

so als Ansatz vielleicht in dieser Richtung:
Code:
    Dim bFoundFlag                  As Boolean
    Dim nFileHandle                 As Integer
    Dim nCounter                    As Integer
    Dim szInput                     As String
    Dim szSearch                    As String


    szSearch = "04/26"
    nFileHandle = FreeFile()
    Open App.Path & "\shift.ini" For Input As #nFileHandle
    While Not EOF(nFileHandle)
        Line Input #nFileHandle, szInput
        nCounter = nCounter + IIf(bFoundFlag, 1, 0)
        If InStr(szInput, szSearch) > 0 Then
            bFoundFlag = True
        End If
    Wend
    Close #nFileHandle
    MsgBox IIf(nCounter > 16, "Mehr als 16", "Weniger als 16")

Gruß
Das Orakel
 
Hallo, versuch´s mal hiermit:
Code:
Private Sub Command1_Click()

If Prüfen("F:\Test.txt", "26.04", 16) = False Then
' eMail schicken
End If

End Sub

Private Function Prüfen(Datei As String, Datum As String, AnzahlTage As Long) As Boolean
Dim Gefunden As Boolean
Dim Text As String
Dim Nr As Integer
Dim Zeile() As String

Gefunden = False

Nr = FreeFile

Open Datei For Binary As Nr
Text = Space(LOF(Nr))
Get Nr, , Text
Close Nr

Zeile = Split(Text, vbCrLf)


For N = 0 To UBound(Zeile)
 
 If Format(Mid(Zeile(N), 1, 5), "dd.mm") = Datum Then
  Gefunden = True
  If Len(Zeile(N + AnzahlTage)) > 6 Then
   Prüfen = True
  Else
   Prüfen = False
  End If
 End If

 If Gefunden = True Then
  Exit For
 End If

Next

If Gefunden = False Then
 MsgBox "Angegebenes Datum konnte nicht gefunden werden !", vbInformation, "Achtung"
End If

End Function
 
Hallo wincnc!

Danke auch für Deine schnelle Antwort, aber bei beiden
Lösungen komme ich nur zu einem gewissen Punkt:

die Sub Funktion findet das Datum in einer Zeile, gibt es
aber nicht aus, bzw. zählt nicht 16 Tage weiter und schaut
dort ob Einträge vorhanden sind... :confused:
Für mich ist alles neu udn schon ein schwieriges Beispiel.
Ich brauche noch ein wenig Zeit & werde schon noch schlau!

Gruß an Alle, :)
Christian
 
Hi Macmannemann

jetzt spezifiziere doch mal bitte Deine Aussage
schaut dort ob Einträge vorhanden
Was heißt das genau

Nur solche Einträge: 04/27=00:00*C;06:00*B;22:00*C
Oder Einträge dieser Art: 04/28=
Oder Wenn Datum gefunden und keine weiteren Zeilen

Gruß
Das Orakel
 
Hallo Orakel,

war ein Denkfehler: :eek:
hat die .ini Datei nicht gefunden, bzw.nicht öffnen können.
Nun findet schonmal Dein Programm die gesuchte Stelle
und zählt die Einträge.Aber noch sucht er nach einer vorgegebenen
Zeichenkette("26/04").Muss das aktuelle Datum noch einbinden, als
Batch Datei abspeichern und das Generieren der Mail noch
ergänzen, dass dies automatisch als Hintergrundapplikation
erfolgt,bzw. abläuft.Dann kopiere ich es auf den Server warte den ersten
Test ab,und schaue mal was meine Kollegen dazu sagen.*g*

Danke guys schon mal im Voraus!Melde mich nochmal...

MfG
Chris
 
Zurück