öffentlich
Redaktion Druckversion

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

1
(4)
Beitrag bewerten
Stand: 11. April 2011

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.

Mitglied werden

Als zahlendes Mitglied von akademie.de haben Sie vollen Zugriff auf alle Inhalte und können alle PDF-Dateien, Checklisten, Mustervorlagen und Anwendungen herunterladen.

Sind Sie sich noch unsicher? Dann wählen Sie die Option “akademie.de kostenlos testen”. So können Sie sich 14 Tage in Ruhe umschauen. Downloads stehen Ihnen in dieser Zeit nicht zur Verfügung. Gefällt Ihnen akademie.de nicht, reicht ein formloser Widerruf per E-Mail innerhalb der ersten 14 Tage. Es entstehen für Sie keine Kosten. Widerrufen Sie nicht, erhalten Sie nach Ablauf von 14 Tagen vollen Zugriff und der Mitgliedsbeitrag wird abgebucht.

Ich bin bereits Mitglied
Mitglied werden!
Ich entscheide mich für folgende Zahlungsweise:

Inhalt

Downloads zu diesem Beitrag

Newsletter abonnieren