Builder 2007 - Access Violation fehler bei goto ????



  • Hallo,

    im Builder 2007 bekomme ich mit folgendem Quellcode wieder
    einmal eine Acess Violation (Programm startet damit erst
    garnicht!):

    if(oBlende==true) { goto Test; }
     ShowMessage("Test");
     Test:
    

    Wenn ich die Zeile

    Test:
    

    ausklammere, dann kommt folgerichtig die Meldung, daß die Sprungadresse
    fehlt. Habe auch andere Sprunghalter ausprobiert, immer das gleiche.

    Blende ich diese 3 Zeilen aus, startet das Programm komplett fehlerfrei.

    Bin für jeden Tipp dankbar, denn das kapiere ich überhaupt nicht... 😕

    Stefan



  • Von wem bekommst du eine AV? Von der IDE, dem Compiler, dem Linker, dem Programm selbst?

    Im C++Builder 2006 funktioniert das einwandfrei (ich habe es allerdings mit einer anderen Bedingung getestet) und er generiert im Debug Mode den folgenden, völlig korrekten Code:

    main_unit.cpp.17: if(ModuleIsCpp==true) { goto Test; }
    00401E44 8B150C474000     mov edx,[$0040470c]
    00401E4A 803A01           cmp byte ptr [edx],$01
    00401E4D 7502             jnz $00401e51
    00401E4F EB2D             jmp $00401e7e
    main_unit.cpp.18: ShowMessage("Test");
    00401E51 66C745E41800     mov word ptr [ebp-$1c],$0018
    00401E57 BAD4414000       mov edx,$004041d4
    00401E5C 8D45F8           lea eax,[ebp-$08]
    00401E5F E8800E0000       call System::AnsiString::AnsiString(const char *)
    00401E64 FF45F0           inc dword ptr [ebp-$10]
    00401E67 8B00             mov eax,[eax]
    00401E69 E8E6100000       call $00402f54
    00401E6E FF4DF0           dec dword ptr [ebp-$10]
    00401E71 8D45F8           lea eax,[ebp-$08]
    00401E74 BA02000000       mov edx,$00000002
    00401E79 E8DA0E0000       call System::AnsiString::~AnsiString()
    main_unit.cpp.20: }
    00401E7E 8B4DD4           mov ecx,[ebp-$2c]
    

    Wenn dein Programm eine AV generiert, kannst du hier nachlesen, wie man den Programmstart debuggt:
    C++Builder: Debugging application startup



  • im BCB2007 funktioniert das auch.



  • ..für alle Tipps. Ich vermute mal es liegt am "alten" Projekt BCB6;
    denn mittlerweile habe ich immer wieder (sporadisch!!!) diese Violation
    Fehler und kann keine Logik feststellen. Da ich ab Freitag erstmal im
    Urlaub bin, gebe ich hier erstmal leicht frustriert auf und werde nach
    dem Urlaub neu beginnen und mich dann wieder melden 🕶

    Schönen Sommer wünsche ich allen in den nächsten Wochen.

    Gruss Stefan



  • wie mein programmierlehrer schon gesagt hat: "wegen goto haben wir den zweiten Weltkrieg verloren..." oder so ähnlich, naja. er meinte ja auch, die ganze welt sei wie eine Datenbank.
    Jedenfalls gibts meistens eine bessere alternative zu der sprunganweisung.

    grüsse an meinen ehemaligen lehrer 🙂


Anmelden zum Antworten