instr() funktioniert nicht

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    instr() funktioniert nicht

    hey

    ich hab folgendes problem hab iwo mal gelesen das es einen befehl (instr()) gibt der mir anzeigt, ob eine bestimmte zecihenkette in einem string steht egal ob am anfang oder am ende....

    bei mir funzioniert dieser befehl nicht.... der CODE:

    Quellcode

    1. Dim datum_von_heute As String = Date.Today.ToString
    2. If File.Exists("C:\E-projekts\Computerzeitzähler\zeiten.txt") Then
    3. Dim letzte_zeile() As String = File.ReadAllLines("C:\E-projekts\Computerzeitzähler\zeiten.txt")
    4. Dim text_für_neues_speichern As String = letzte_zeile.ToString
    5. Dim strng_letzt_zeile As String = letzte_zeile(letzte_zeile.Length - 1).ToString
    6. If InStr(strng_letzt_zeile, datum_von_heute) Then
    7. text_für_neues_speichern = text_für_neues_speichern.Remove(text_für_neues_speichern.Length - 1)
    8. File.WriteAllText("C:\E-projekts\Computerzeitzähler\zeiten.txt", text_für_neues_speichern & vbNewLine & datum_von_heute & ": " & Label1.Text & ":" & Label2.Text & ":" & Label3.Text)
    9. Else


    kann mir jemand einen alternativ code geben oder mich korrigieren...

    danke
    Nimm die String-Funktion Contains, InStr ist veraltet und sollte nicht mehr verwendet werden...

    VB.NET-Quellcode

    1. If strng_letzt_zeile.Contains(datum_von_heute) Then
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    funzt immer noch nicht....

    hab zwei probleme....
    1. der erkennt bei mir NIE ob die zeichenkettte in meinem fall das datum von heute in der textdatei vorhanden ist.....
    2. ich muss die letzte zeile gelöscht bekommen damit ich sie neu schreiben kann... wie geht das???

    hier ist einmal der vollständige code:

    Quellcode

    1. Dim datum_von_heute As String = Date.Today.ToString
    2. If File.Exists("C:\E-projekts\Computerzeitzähler\zeiten.txt") Then
    3. Dim text() As String = File.ReadAllLines("C:\E-projekts\Computerzeitzähler\zeiten.txt")
    4. Dim text_für_neues_speichern As String = text.ToString
    5. If text_für_neues_speichern.Contains(datum_von_heute.ToString) Then
    6. File.WriteAllText("C:\E-projekts\Computerzeitzähler\zeiten.txt", text_für_neues_speichern & vbNewLine & datum_von_heute & ": " & Label1.Text & ": " & Label2.Text & ": " & Label3.Text)
    7. Else
    8. ' HIer soll die letzte zeile gelöscht werden (von text_für_neues_speichern) und danach gespeichert werden.....
    9. End If
    10. Else
    11. File.WriteAllText("C:\E-projekts\Computerzeitzähler\zeiten.txt", datum_von_heute & ": " & Label1.Text & ": " & Label2.Text & ": " & Label3.Text)
    12. End If


    ich krieg es nicht auf die kette
    1. Nutze bitte die VB-Tags und nicht nur die Code-Tags, dann wird der Code auch eingefärbt und lässt sich schöner lesen
    2. lass dir mal datum_von_heute ausgeben, wie das aussieht. Evtl. ist das Datumsformat nicht so, wie du es gerne hättest, siehe evtl die ToString() Methoden ToShortDateString() oder so ähnlich an, ggf. auch noch Formatierung angeben ToString("dd.mm.YYYY").
    3. Letzte Zeile löschen: nutze die Methode LastIndexOf() um den letzten Zeilenumbruch herauszufinden, danach nutzt du Substring() um von Anfang bis Positions des letzten Zeilenumbruchs herauszuschneiden und in eine Variable zu schreiben, auch die selbe.
    also punkt 1 ich werds versuchen...
    punkt 2 ... danke erstmal aber wenn ich das zum ersten mal ausführ dann sieht die textdatei so aus wie es sein soll:

    04.07.2011: 0: 0: 9

    wenn ich das aber zum zweitenmal öffne und das datum angepasst hab (in 03.07.2011: 0: 0: 9) kommt leider das hier raus:

    System.String[]
    04.07.2011: 0: 0: 19


    was mach ich flasch....???

    VB.NET-Quellcode

    1. Dim text() As String = System.IO.File.ReadAllLines("C:\E-projekts\Computerzeitzähler\zeiten.txt")
    2. Dim text_für_neues_speichern As String = text.ToString
    => text_für_neues_speichern = System.String[]
    Du musst die Zeilen einzeln aus dem Array rausholen. Nicht mit ToString.

    VB.NET-Quellcode

    1. For Each line As String In text
    2. ' etwas mit der Zeile tun
    3. Next
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!