Fehler in der exe

  • VB6

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von .Phil.

    Fehler in der exe

    Hallo Leute,

    ich habe ein Problem was ich nicht nachvollziehen kann.

    Also ich starte ein Programm in der Programmierumgebung und dort funktioniert alles. Dann erstelle ich daraus eine exe und bei der Kompilierung + Erstellen der Exe kommt kein Fehler.

    Starte ich dann aber die Exe Datei stürzt das Programm nach der Zeit mit dem Laufzeitfehler 5 ab. Ungültiger Prozeduraufruf oder ungültiges Argument.

    Woran kann das liegen das es bei der Exe der Fehler entsteht?

    Hoffe auf Ideen von euch.

    Danke und Gruß
    VisualFreak1985
    Also hier mal die Screenshot.

    Ja das mit dem Error Log weiß ich ja aber da ich nicht weiß wo genau dieser Fehler auftritt ist es schwer diesen gezielt zu setzen.
    Bilder
    • Fehlermeldung.jpg

      60,97 kB, 430×256, 122 mal angesehen
    Error handling macht man da wo ein Fehler auftreten KÖNNTE. Das sind viele Stellen im Programm.

    Aber die zweite Fehlermeldung hilft schon mal:
    Irgendwo greifst du auf etwas zu (Datei, Registry, ...) obwohl du das nicht darfst.
    Dabei wird vermutlich ein Objekt erzeugt und da du nicht prüfst, ob das objekt vlt "nothing" ist, geht alles danach in die Hose

    (vermute ich jetzt mal)

    VisualFreak1985 schrieb:

    Okay aber warum fällt dem Programm das nicht auf beim Kompilieren?

    Was soll da auffallen? Das ein Funktionsaufruf ggfs "nothing" zurückliefert? Und das der Programmierer das nicht abfängt sondern einfach stumpf verwendet, egal was da kommt?

    In der IDE gelten ggfs andere Pfade, Rechte, etc. Deswegen gibt's ErrorHandling. Und wenn man statt vb6 .Net verwendet, gibt's sogar ein richtig gutes ErrorHandling ...

    VisualFreak1985 schrieb:

    Okay aber warum fällt dem Programm das nicht auf beim Kompilieren?

    Der IDE fällt das nicht auf, weil der Aufruf syntaktisch korrekt ist. Dass das Ergebnis vielleicht mal ungültig ist wird beim Kompellieren nicht berücksichtigt. Genauso kannst du folgendes schreiben:

    Visual Basic-Quellcode

    1. i = 5/j

    Unter dern Annahme, das i und j Integer sind wird der Kompiler nicht meckern. Wenn du dann aber zur Laufzeit j=0 setzt wird dein Programm schön sauber auf den Hammer laufen :).

    Bei Zugriffen auf potentiell nicht vorhandene oder geschütze Objekte sollte man immer einplanen, dass es zu Problemen kommen kann. Vor allem dann, wenn du den exklusiven Zugriff nicht garantieren kannst.

    Grüße
    Phil