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 meldenSchö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