Exception_Access_Violation - Error Wondows?
Übersicht

CO2ehemals "SirMO"Betreff: Exception_Access_Violation - Error Wondows? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
Ich hab mich durch die Tutorials gearbeitet und nun mal ein kleines projekt gestartet um zu sehen ob ich das wirklich kann. Wenn ich das Ausführen will, dann kommt der Fehler "Exception_Access_Violation", ich schick euch mal den Code: Code: [AUSKLAPPEN] Strict 'Strict-Mode
Graphics 800, 600, 32, 1 'Graphiken: 800 * 600 p Global gear:String = "N" 'momentaner Gang: Neutral Global game:Int = 1 Global FPS:ttimer = CreateTimer(59) '59 Frames per Second '- - - - - - - - - HAUPTSCHLEIFE - - - - - - - - - - Repeat WaitTimer(FPS) Print "Gang: " + gear + "" 'momentanen Gang ausgeben If KeyDown(57) 'Wenn die Leertaste gedrückt (Kupplung) wird, und If KeyHit(79) 'Numpad 1 gedrückt wird, dann gear = "1" 'ist der Gang der 1. ElseIf KeyHit(80) 'usw. gear = "2" ElseIf KeyHit(81) gear = "3" ElseIf KeyHit(75) gear = "4" ElseIf KeyHit(76) gear = "5" ElseIf KeyHit(77) gear = "6" ElseIf KeyHit(82) gear = "N" ElseIf KeyHit(74) gear = "R" Else 'wenn eine andere Taste gedrückt wird, dann gear = gear 'bleibt der gear, was er ist EndIf Else 'wenn die leertaste nicht gedrückt wird, und If KeyHit(79) 'Numpad 1 gedrückt wird, dann gear = "1" 'ist der gang zwar der 1., aber Print "Autsch, das Getriebe!" 'es wird auch das hier ausgegeben ElseIf KeyHit(80) 'usw. gear = "2" Print "Autsch, das Getriebe!" ElseIf KeyHit(81) gear = "3" Print "Autsch, das Getriebe!" ElseIf KeyHit(75) gear = "4" Print "Autsch, das Getriebe!" ElseIf KeyHit(76) gear = "5" Print "Autsch, das Getriebe!" ElseIf KeyHit(77) gear = "6" Print "Autsch, das Getriebe!" ElseIf KeyHit(82) gear = "N" Print "Autsch, das Getriebe!" ElseIf KeyHit(74) gear = "R" Print "Autsch, das Getriebe!" Else gear = gear EndIf EndIf If KeyHit(1) 'wenn Escape gedrückt wird, dann wird game zu 0 und game = 0 EndIf Flip FlushKeys() FlushMouse() Until game = 0 'das spiel wird beendet End '- - - - - - - - - - HAUPTSCHLEIFE ENDE - - - - - - - - - - Ich habe schon soviel versucht, hat aber nichts funktioniert, weiß iwer von euch wo der fehler liegt? |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Verwendest du die Aktuelle BM Version? Bei mir kommt kein Fehler.
- Für die Tasten gibt es eingebaute Konstanten, die wesentlich besser lesbar sind - Einrückungen Fehlen! - Späße wie "gear = gear" kannst du weglassen. - Die ganze Tastenabfrage könnte man wesentlich kürzen; OR würde z.B. schon mal helfen. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich bekomme auch EXCEPTION_ACCESS_VIOLATION. Graphics![]() ![]() mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Uhm... ja, sollte man nicht löschen, weil man den erzwungenen Vollbildmodus hasst... ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ok, danke erstmal! Bin noch sehr an BlitzBasic gewöhnt, erst wor 2 Tagen umgestiegen ![]() @ Xeres: - "Für die Tasten gibt es eingebaute Konstanten, die wesentlich besser lesbar sind" - Bin wie gesagt noch sehr an BB gewöhnt, von daher nehm ich immer Scan Code ![]() - "Einrückungen Fehlen!" - War nur ein kleineres Projekt, von daher fand ich Einrückungen überflüssig. Wenn es jetzt ein 1500-Zeilen-Code wäre wären da natürlich einrückungung, aber so. - "Späße wie "gear = gear"" - kleine Macke von mir: Ich schreibe unnötigen Code (Ich schreibe z.b. auch anstatt Code: [AUSKLAPPEN] print variable
Code: [AUSKLAPPEN] print "" + variable + "" ![]() - "Die ganze Tastenabfrage könnte man wesentlich kürzen; OR würde z.B. schon mal helfen." - Ich muss mich erstmal an BMax gewöhnen, dann kann man von mir komplexere Sachen als einfachste If-Abfragen verlangen ![]() |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
Macintosh |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
und Print macht in BM was anderes als in BB !
In blitzmax wird damit etwas in die KONSOLE geschriben. und wenn du das 59 mal pro sekunde machst... viel spaß beim spielen. Benutze BlitzMax: [AUSKLAPPEN] DrawText "Text",x,y |
||
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Soweit ich weiß entsprechen die BB-Scancodes nicht genau den BlitzMax-Scancodes.
Außerdem: du machst mit diesen "kleinen" Überflüssigkeiten dem Compiler nur Arbeit und im Endeffekt erhältst du dafür Ineffizienz. Ich weiß jetzt nicht genau, wie weit der BlitzMax-Compiler soetwas optimiert, aber man sollte es sich auf keinen Fall angewöhnen. mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
CO2ehemals "SirMO" |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ Thunder:
ScanCodes: Gut das ich mit den Scancodes noch kein größeres projekt gestartet habe - wenn dem wirklich so wäre hätte ich n großes problem gehabt. Ich werd mich mal schlau machen wegen der scancodes für bmax. Und wenn ich hinterher die konstanten benutzen muss, wie ist dass beim Numpad - wie heißen da die konstanten? thxc schonmal im vorraus. Ich weiß nicht wie du das siehst, aber mir kommt der Code so leserlicher vor, also mit Code: [AUSKLAPPEN] [syntax="bmax"]print "" + variable + ""[/syntax] anstatt
Code: [AUSKLAPPEN] [syntax="bmax"]print variable[/syntax] .
und die ineffizienz... naja, darüber kann ich hinwegsehen, wenn es sich nur um ein paar hundertstel sek. berungszeit mehr handelt. |
||
mfG, CO²
Sprachen: BlitzMax, C, C++, C#, Java Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti |
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Konstanten findest du in der Dokumentation unter
Modules->User input->Key codes |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
Um nochmal auf das konkrete Beispiel zurückzukommen:
Dass er dir leserlicher vorkommt finde ich relativ komisch, weil zwei unnötige Stringverbindungen dabei sind und man nicht auf Anhieb sieht, was ausgegeben werden soll. Egal, wichtiger ist folgendes: Ich habe jetzt herausgefunden um wieviel das ineffizienter ist und ich habe bemerkt, dass der Blitzmax-Compiler an der Stelle überhaupt nicht optimiert und damit das Programm viel ineffizienter wird. Gegeben sei eine Variable "variable" des Typs Int: BlitzMax: [AUSKLAPPEN] Print variable
wird kompiliert zu: Code: [AUSKLAPPEN] push dword [_bb_variable]
call _bbStringFromInt add esp,4 push eax call _brl_standardio_Print add esp,4 Aus: BlitzMax: [AUSKLAPPEN] Print ""+variable+"" wird 1. mehr Code und 2. kommen zwei Funktionsaufrufe dazu! Code: [AUSKLAPPEN] push _1
push dword [_bb_variable] call _bbStringFromInt add esp,4 push eax push _1 call _bbStringConcat add esp,8 push eax call _bbStringConcat add esp,8 push eax call _brl_standardio_Print add esp,4 ;//Zusätzliche Funktionsaufrufe (in AT&T-Syntax): ;//Aufruf von StringFromInt: _bbStringFromInt: pushl %ebp movl %esp, %ebp pushl %ebx subl $100, %esp leal -72(%ebp), %eax addl $64, %eax movl %eax, -76(%ebp) movl 8(%ebp), %eax shrl $31, %eax movl %eax, -80(%ebp) cmpl $0, -80(%ebp) je L16 negl 8(%ebp) cmpl $0, 8(%ebp) jns L16 movl $11, 4(%esp) movl $LC1, (%esp) call _bbStringFromBytes movl %eax, -84(%ebp) jmp L13 L16: leal -76(%ebp), %eax decl (%eax) movl -76(%ebp), %ebx movl 8(%ebp), %ecx movl $1717986919, %eax imull %ecx sarl $2, %edx movl %ecx, %eax sarl $31, %eax subl %eax, %edx movl %edx, %eax sall $2, %eax addl %edx, %eax addl %eax, %eax subl %eax, %ecx movl %ecx, %eax addb $48, %al movb %al, (%ebx) movl 8(%ebp), %ecx movl $1717986919, %eax imull %ecx sarl $2, %edx movl %ecx, %eax sarl $31, %eax subl %eax, %edx movl %edx, %eax movl %eax, 8(%ebp) testl %eax, %eax je L17 jmp L16 L17: cmpl $0, -80(%ebp) je L19 leal -76(%ebp), %eax decl (%eax) movl -76(%ebp), %eax movb $45, (%eax) L19: leal -72(%ebp), %eax subl -76(%ebp), %eax addl $64, %eax movl %eax, 4(%esp) movl -76(%ebp), %eax movl %eax, (%esp) call _bbStringFromBytes movl %eax, -84(%ebp) L13: movl -84(%ebp), %eax addl $100, %esp popl %ebx popl %ebp ret ;//zwei(!) Aufrufe von bbStringConcat: _bbStringConcat: pushl %ebp movl %esp, %ebp subl $24, %esp movl 8(%ebp), %edx movl 12(%ebp), %eax movl 8(%eax), %eax addl 8(%edx), %eax movl %eax, -4(%ebp) movl -4(%ebp), %eax movl %eax, (%esp) call _bbStringNew movl %eax, -8(%ebp) movl 8(%ebp), %eax movl 8(%eax), %eax addl %eax, %eax movl %eax, 8(%esp) movl 8(%ebp), %eax addl $12, %eax movl %eax, 4(%esp) movl -8(%ebp), %eax addl $12, %eax movl %eax, (%esp) call _memcpy movl 12(%ebp), %eax movl 8(%eax), %eax addl %eax, %eax movl %eax, 8(%esp) movl 12(%ebp), %eax addl $12, %eax movl %eax, 4(%esp) movl 8(%ebp), %eax movl 8(%eax), %eax addl %eax, %eax addl -8(%ebp), %eax addl $12, %eax movl %eax, (%esp) call _memcpy movl -8(%ebp), %eax leave ret Ich habe den Inhalt der verwendeten Funktionen bbStringConcat und bbStringFromInt hinzugefügt um zu verdeutlichen wieviel mehr Code dadurch generiert wird und unnötig durchgelaufen wird. mfg Thunder |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group