Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Hat QuickBasic einen Bug?

 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Maximum Access Violation



Anmeldungsdatum: 23.02.2005
Beiträge: 9
Wohnort: Schwabach

BeitragVerfasst am: 23.02.2005, 22:08    Titel: Hat QuickBasic einen Bug? Antworten mit Zitat

Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 23.02.2005, 22:27    Titel: Antworten mit Zitat

Oder vielleicht hast du was durcheinander gebracht zwinkern zwinkern

Also bei mir unter Win XP ist da nichts passiert
(auch kein Fehler von QB), man konnte nur den Cursor nicht mehr bewegen.

Könnte es sein, dass

1. Da ein Fehler bei den Variablen ist, d.h. dass du
irgendwo vielleicht eine bereits exitsierende Variable genommen hast.

2. Dass du vielleicht ein %, !, $, etc. vergessen hast

3. Dass du den Namen einer Variablen verwechselt hast, obwohl du die
selbe gemeint hast (z.B. Player.Car mit Player.Auto)

Zur Not: Einfach neu programmieren und aussagekräftigere Variablennamen verwenden.

(Das Problem hatte ich auch mal bei einem Spiel, da musste ich die ganze Engine neu programmieren. Am Ende stellte sich heraus, dass ich an einer Stelle nur ein 's' vergessen hatte peinlich peinlich . War aber ganz nützlich, denn so habe ich das ganze Spiel von Grund auf 'generalüberholt')

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Maximum Access Violation



Anmeldungsdatum: 23.02.2005
Beiträge: 9
Wohnort: Schwabach

BeitragVerfasst am: 25.02.2005, 18:36    Titel: du glaubst nicht was ich schon verändert und probiert habe: Antworten mit Zitat

ja das is doch gerade der Witz: weinen
Ich hab alle Variablennamen ausgetauscht. Y% als parameter bei elPop() ist ein Element von Position (TYPE), also gewechselt.
Ich habe gestern die Funktion menuSchlange so weit auskommentiert, das nur noch die Schleife (jetzt immitiert mit einem GOTO), die Tastaturabfrage und das problematische IF...THEN stehenbleiben, jetzt ist das ganze sogar im Debug zu beobachten:

Code:

cx% = 10
cy% = 10
DO
     lastKe$ = INKEY$
     '(...)
     IF elPop(cx%, cy%) = cBack THEN olderX% = cx%: olderY% = cy%
LOOP UNTIL lastKe$ = CHR$(13)


Im Debugmodus hab ich in meinem Direktfenster folgendes stehen:
Code:

DEF SEG = VARSEG(olderY%): Msg$(HEX$(PEEK(VARPTR(olderY%))), 1): DEF SEG

dies wird nach jedem Befehl ausgeführt um den Wert der Variablen zu überprüfen. Sobald ich in die SUB elPop() gehe, steht da dann plötzlich nicht mehr A (10) sondern irgendein hoher Wert.
Und du siehst: olderY% bleibt eigentlich unberührt.

In einem Punkt hast du recht: unter XP bleibt (bei der alten Variante siehe Link) nur der Cursor stehen. Ein Fehler von QB tritt eigentlich selten auf

Danke für dein Interesse lächeln .
Es würde mir trotzdem viel daran liegen, wenn sich mehrer Leute mit dem Problem befassen. Den Grund eines Bugs in QB4.5 herauszufinden, um diesen dann gezielt umgehen zu können liegt bestimmt im Interesse aller QBasic Programmierenden zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 25.02.2005, 19:03    Titel: Antworten mit Zitat

Hallo!

Nur mal so ne Frage, warum verwendest du Code-Zeilen wie
Code:

SLEEP 0

bzw.
Code:

DO: LOOP UNTIL INKEY$ = ""

????

Ich persönlich plädiere weiter für einen Fehler deinerseits geschockt , und
empfehle dir, das Programm zur Not noch einmal neu zu schreiben.

Manchmal ist eben der Wurm drin.

Da hilft nichts, runter von der Festplatte und noch mal gaaanz von vorne...

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Maximum Access Violation



Anmeldungsdatum: 23.02.2005
Beiträge: 9
Wohnort: Schwabach

BeitragVerfasst am: 25.02.2005, 20:59    Titel: nöööööööööö Antworten mit Zitat

Code:
SLEEP 0: lastKey$

wartet natürlich auf den Tastendruck und speichert ihn dann in lastKey$.
Man hätte natürlich auch die 0 weglassen können, aber das is das gleiche. SLEEP 0 wartet nicht 0 Sekunden, sondern macht bei einem Tastendruck weiter.

Code:
DO: LOOP UNTIL INKEY$ = ""
(Tastaturpuffer leeren)
schaut strange aus, hat sich aber wirklich als nütlich erwiesen, wo sonst immer das gepiepse anfängt und die Tasten nicht mehr anständig abgefragt werden ->Tastaturpuffer voll<- sag ich nur...

also, kommentier die IF...THEN Zeile einfach mal aus und starte das Programm ?!

Jetzt hab ich das Zeug endlich mal anständig strukturiert (Elemente sind ja eigentlich schon Klassen wie du in SNK1.BAS sehen kannst) und jetzt erwisch ich zufällig irgend einen komischen Fehler und ich darf wieder alles neu schreiben mit dem Kopf durch die Mauer wollen
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
jb



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 25.02.2005, 21:12    Titel: Antworten mit Zitat

Ach so, den Tastaturpuffer leeren kenne ich nur mit

Code:

DEF SEG = 0
POKE &H41A, PEEK(&H41C)
DEF SEG

(Ist ein bissal schneller)

oder mit

Code:

DO: LOOP WHILE LEN(INKEY$)


Na ja, ich hab mir den Code noch mal angeschaut, und ich finde einfach
keinen Fehler.

Sorry,

jb
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Gremlin



Anmeldungsdatum: 12.12.2004
Beiträge: 142
Wohnort: Heinsberg

BeitragVerfasst am: 26.02.2005, 10:54    Titel: Antworten mit Zitat

Zitat:
Code:
SLEEP 0: lastKey$


wartet natürlich auf den Tastendruck und speichert ihn dann in lastKey$.
Man hätte natürlich auch die 0 weglassen können, aber das is das gleiche. SLEEP 0 wartet nicht 0 Sekunden, sondern macht bei einem Tastendruck weiter.


Also dafür gibts eine eigene Funktion.


Code:
lastKey$ = INPUT$(n)

wartet auf n Tastendrücke und speichert sie in der Variablen lastKey$.
Die letzte Taste (also eine) wird dann dementsprechend mit

Code:
lastKey = INPUT$(1)

gespeichert.
_________________
Tja, hier konnte ihre Werbung stehen.
Pech gehabt. zwinkern
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Maximum Access Violation



Anmeldungsdatum: 23.02.2005
Beiträge: 9
Wohnort: Schwabach

BeitragVerfasst am: 01.03.2005, 21:25    Titel: Zeichenkettenbereich beschädigt Antworten mit Zitat

ich hab schon wieder was rausgefunden:
Entscheidend für den Fehler ist die Verwendung von Stringvariablen, wobei das LOOP UNTIL nicht beachtet wird.

Jetzt wird mir auch langsam das "Zeichenkettenbereich beschädigt" klar.
verwundert
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Quark48



Anmeldungsdatum: 16.10.2004
Beiträge: 559
Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern

BeitragVerfasst am: 01.03.2005, 21:44    Titel: Antworten mit Zitat

Hallo!

Ich hab endlich auch mal ne winzige Frage an euch zwinkern
Früher kam bei mir auch immer "Zeichenkettenbereich beschädigt."
QB hielt an und zeigte mir nur noch diese Meldung. (Bei Fehlern solchen Ausmaßes ist dasnatürlich klar durchgeknallt )
Aber ich würd schon gern mal wissen, wann dieser Fehler auftritt - vielleicht wenn der String-Speicher knapp wird?!?
_________________
Grüßle, Stefan lächeln
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht! happy
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Stormy



Anmeldungsdatum: 10.09.2004
Beiträge: 567
Wohnort: Sachsen - wo die schönen Frauen wachsen ;)

BeitragVerfasst am: 01.03.2005, 23:35    Titel: Antworten mit Zitat

Etwas Out-Topic: Es gibt auch andere Bugs in QBasic...siehe folgende Beiträge:

http://forum.qbasic.at/viewtopic.php?t=91
http://forum.qbasic.at/viewtopic.php?t=92
http://forum.qbasic.at/viewtopic.php?t=108

Bei einigen Problemen wird auch gleich ein Workaround angeboten... zwinkern

cu, Stormy
_________________
+++ QB-City +++ Die virtuelle Stadt für jeden Freelancer - Join the community!
Projekte: QB-City,MysticWorld (RPG), 2D-OpenGL-Tutorial
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Quark48



Anmeldungsdatum: 16.10.2004
Beiträge: 559
Wohnort: Saltendorf a.d. Naab bzw. Teublitz i.d. Oberpfalz / Bayern

BeitragVerfasst am: 05.03.2005, 16:39    Titel: Antworten mit Zitat

Hallo!

Das wär natürlich klasse, wenn M$ die Bugs ausbügeln würde grinsen
_________________
Grüßle, Stefan lächeln
***
Wenn ein Programm auf nem alten Rechner gut läuft, dann läuft´s auf nem neuen erst recht! happy
Ich habe/hatte keine feste Spange und auch keine Schwester. Der Rest stimmt. Es tut mir leid... :-/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen MSN Messenger
Dusky_Joe



Anmeldungsdatum: 07.01.2005
Beiträge: 1007
Wohnort: Regensburg/Oberpfalz

BeitragVerfasst am: 05.03.2005, 17:00    Titel: Antworten mit Zitat

Als ob die sich nohc für QB interessieren würden. Des is für die praktisch totes land, abgestoßen *g*
alles, was die noch verbessern, is VB bzw die damit verwandten sprachen.
Die DOS-Zeiten sind vorbei.
Oder würdest du noch was an nem Programm verbessern, das du vor Jahren geschrieben hast, und von dem du schon lange ne bessere version geschrieben hast?

(nicht dass VB so viel besser wäre als QB, ich find imperative sprachen besser also objektorientierte grinsen )

naja.
gibt ja freebasic!
_________________
fully biological degradable

Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu QBasic. Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz