öffentlich
Redaktion Druckversion

Syntax-Fehler, logische Fehler, Laufzeitfehler, Datentyp-Probleme

Logische Fehler

Logische Fehler bemerken Sie eigentlich nur anhand unerwarteter Ergebnisse des Programms. Aus Computer-Sicht ist nämlich alles in bester Ordnung. Ihr Programm macht exakt, was Sie geschrieben haben. Das ist nur nicht das, was Sie gemeint haben.

Betrachten Sie beispielsweise den folgenden Code, mit dem die ersten drei Einträge einer Collection gelöscht werden sollen (falls Sie bisher noch nicht mit Collections gearbeitet haben: das sind automatisch verwaltete Sammlungen gleichartiger Objekte. Die Aufzählungsobjekte wie Worksheets, Documents, QueryDefs etc. sind alle intern Collections):

Sub InCollectionFalschLoeschen()
    Dim colDaten As New Collection
    Dim i As Integer
    
    colDaten.Add "a"
    colDaten.Add "b"
    colDaten.Add "c"
    colDaten.Add "d"
    colDaten.Add "e"
    colDaten.Add "f"
    colDaten.Add "g"
    
    For i = 1 To 3
        colDaten.Remove i
    Next
    Debug.Print colDaten(1)
    Debug.Print colDaten(2)
    Debug.Print colDaten(3)
End Sub

Wie Sie im Direktfenster (Strg+G zum Anzeigen) kontrollieren können, sind keineswegs die ersten drei Einträge gelöscht, sondern diejenigen mit Indexnummer 1 ("a"), 3 ("c") und 5 ("e").

Das ist aber völlig korrekt, denn nach dem Löschen des ersten Eintrags rückt der ehemals zweite auf Position 1. Wenn Sie also jetzt im zweiten Schleifendurchlauf den jetzt zweiten Collection-Eintrag löschen, war dieser ursprünglich an Position 3.

Das folgende Listing zeigt, was Sie tatsächlich programmieren müssten:

Sub InCollectionRichtigLoeschen()
    Dim colDaten As New Collection
    Dim i As Integer
    
    colDaten.Add "a"
    colDaten.Add "b"
    colDaten.Add "c"
    colDaten.Add "d"
    colDaten.Add "e"
    colDaten.Add "f"
    colDaten.Add "g"
    
    For i = 1 To 3
        colDaten.Remove 1
    Next
    Debug.Print colDaten(1)
    Debug.Print colDaten(2)
    Debug.Print colDaten(3)
End Sub

Sie dürfen also nicht die ersten drei Einträge nacheinander löschen, sondern müssen dreimal den ersten (!) Eintrag entfernen.

Zum sicheren Erkennen logischer Fehler müssen Sie einen sehr hohen Aufwand treiben, weil diese gerade keine technischen Mängel enthalten.

Demgegenüber ist die letzte Kategorie von Fehlern, nämlich die Laufzeitfehler, leichter zu handhaben.

Als Mitglied können Sie diesen Beitrag weiterlesen!

Werden Sie Mitglied und testen Sie akademie.de 14 Tage lang kostenlos!

In den ersten 14 Tagen haben Sie Zugriff auf alle Inhalte auf akademie.de, außer Downloads. Sie können in dieser Zeit ohne Angabe von Gründen stornieren. Eine E-Mail an service@akademie.de genügt. Nur wenn Sie Mitglied bleiben, wird der Mitgliedsbeitrag nach Ende der 14tägigen Stornofrist abgebucht.

Ich bin bereits Mitglied
Jetzt Mitglied werden und akademie.de 14 Tage kostenlos testen
Ich entscheide mich für folgende Zahlungsweise:
14 Tage Stornorecht:
Ich kann meine Mitgliedschaft in den ersten 14 Tagen jederzeit formlos stornieren, z.B. per E-Mail an service@akademie.de.

Inhalt

Downloads zu diesem Beitrag

Newsletter abonnieren