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:

problem beim kompilieren

 
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
jan91



Anmeldungsdatum: 24.03.2008
Beiträge: 6

BeitragVerfasst am: 24.03.2008, 22:05    Titel: problem beim kompilieren Antworten mit Zitat

hallole

ich hab ein problem mit meinem ersten kleine spielchen

wenn ich des mit quickbasic 4.5 in ne exe datei umgewandelt habe
und dann ausführe zeigt des mir an das der
irgendeine adresse net findet

wenn ichs direkt aus qbasic oder quickbasic rausstarte klappt´s perfekt
hat irgenjm. ne ahnung woran des liegt bzw. kanns mal kurz bei sich testen

gruß Jan
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
jan91



Anmeldungsdatum: 24.03.2008
Beiträge: 6

BeitragVerfasst am: 24.03.2008, 22:06    Titel: Antworten mit Zitat

So hier nun des hammers übel Programm^^:

Code:

DECLARE SUB pause ()
DECLARE SUB gameover (pkt%)
DECLARE SUB plattform ()
DECLARE SUB hinten ()
DECLARE SUB kreis (x%, y%)


SCREEN 12

DIM SHARED bild%(201)
DIM SHARED bild2%(290)
DIM SHARED r%
DIM SHARED f%(4)
DIM SHARED gesch%
r% = 10
x% = 320
y% = 240
xp% = 320
yp% = 385
xr% = 1
yr% = -1
lvl% = 1
pkt% = 0
gesch% = 100

kreis 320, 240
plattform
hinten


PUT (xp%, yp%), bild2%, PSET
PUT (x%, y%), bild%, PSET

LOCATE 27, 5
PRINT "Der Ball darf nicht in den roten Bereich "
LOCATE , 5
PRINT "Bewege die Plattform links und rechts mit den Pfeiltasten, Ende = ESC"
SLEEP


DO

'-----kugel verschieben-----

x% = x% + xr%
y% = y% + yr%


'-----taste$ = Eingabe der Tastaur---

taste$ = INKEY$
SELECT CASE taste$

'------Plattform verschieben-----

CASE IS = CHR$(0) + CHR$(75)
xp% = xp% - 10
IF xp% < 20 THEN xp% = 20

CASE IS = CHR$(0) + CHR$(77)
xp% = xp% + 10
IF xp% > 520 THEN xp% = 520

CASE ELSE
END SELECT

PUT (xp%, yp%), bild2%, PSET

'------einlesen der Farben um den Kreis-----

f%(1) = POINT(x% + (r% + 16), y%)
f%(2) = POINT(x% - (r% - 8), y%)
f%(3) = POINT(x%, y% + (r% + 16))
f%(4) = POINT(x%, y% - (r% - 8))

'----testen ob Kreis etwas berhrt-----

IF f%(1) = 1 OR f%(2) = 1 THEN xr% = -xr%
IF f%(3) = 1 OR f%(4) = 1 THEN yr% = -yr%
IF f%(3) = 4 THEN gameover pkt%

'----einfgen des Kreises
PUT (x%, y%), bild%, PSET

'-----kleine Kunstpause-----
pause

'------Punktestabd erh”hen und berprfen----------

pkt% = pkt% + 1
IF pkt% = 30000 THEN
CLS
LOCATE 10, 8: PRINT "Winner"
CALL gameover(pkt%)
END IF

'-----zirkulieren bis ESC taste gedrckt wird-----

LOOP UNTIL taste$ = CHR$(27)


gameover pkt%

SUB gameover (pkt%)
CLS
LOCATE 10, 10
PRINT "Drck die Eingabetaste"
DO: LOOP UNTIL INKEY$ = CHR$(13)

LOCATE 10, 10

PRINT "Erreichte Punkte: "; pkt%

SLEEP
END
END SUB

SUB hinten
'Dieser Sub zeichnet den hintergrund


CLS
LINE (16, 12)-(624, 468), 1, B
PAINT (7, 6), 1, 1

LINE (0, 400)-(640, 400), 1
PAINT (300, 410), 4, 1
LINE (17, 400)-(623, 400), 4


END SUB

SUB kreis (x%, y%)
'Dieser Sub zeichnet einen Kreis und l„dt ihn in bild%

CIRCLE (x%, y%), r%, 2
PAINT (x%, y%), 2, 2
GET (x% - r% - 2, y% - r% - 2)-(x% + r% + 2, y% + r% + 2), bild%
CLS

END SUB

SUB pause
FOR i% = 1 TO gesch%
FOR t% = 1 TO gesch%
NEXT t%
NEXT i%

END SUB

SUB plattform

'Dieser Sub zeichnet die Bewegliche Plattform und liest sie in Bild2% ein

LINE (300, 395)-(380, 385), 1, BF
GET (290, 395)-(390, 385), bild2%

END SUB
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 24.03.2008, 22:24    Titel: Antworten mit Zitat

Hi,

ich habe deinem Beitrag mal [ Code ]-Tags hinzugefügt zum besseren Lesen deines Programmes.

Da ich in deinem Programm keine Dateizugriffe entdecke kann es sich bei dem Adressen-Fehler eigentlich nur um das Fehlen der Brun45.exe handeln.

Du hast in dem "EXE Datei erstellen"-Dialog die Möglichkeit entweder eine Exe zu erstellen die die brun45.exe benötigt oder eine Exe zu erstellen die selbstständig läuft.
Setze in diesem Dialog das Kreuz bei "selbstständige exe" und kompiliere die Datei noch einmal. Danach sollte es dann funktionieren.

Falls es doch eher eine Windowsfehlermeldung ala "Adressenkonflikt" etc. sein sollte, dann bitte die Fehlermeldung posten, da diese natürlich mehr aussagt als "zeigt des mir an das der irgendeine adresse net findet". zwinkern

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
jan91



Anmeldungsdatum: 24.03.2008
Beiträge: 6

BeitragVerfasst am: 24.03.2008, 22:42    Titel: Antworten mit Zitat

thx für die schnelle antwort
ich hatte den haken bei selbständige exedatei

Ich arbeite unter Windows XP
Des is die Vollständige fehlermeldung(oder die ausgeschrieben form
von(zeigt des mir an das der irgendeine adresse net findet^^):
Code:
Unzulässiger Funktionaufruf in Modul Pong(so heißt mein Programm)
an Adresse 0736:0538
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
A.K.



Anmeldungsdatum: 02.05.2005
Beiträge: 467
Wohnort: HH

BeitragVerfasst am: 24.03.2008, 23:18    Titel: Antworten mit Zitat

hm,

das machts natürlich schwerer.

Kannst du in deinem Programm noch eine kleine Funktion einbauen die überprüft ob deine y%-Koordinate wirklich immer innerhalb des Bildschirms ist?
Gerade bei den Put/Get-Anweisungen kann dies oft zu Problemen führen.

Ich kann das Programm momentan leider nicht testen da ich am falschen Rechner sitze.

MFG A.K.
_________________

http://forum.IconSoft.de
http://www.pnpbb.de - hol dir jetzt dein eigenes kostenloses Forum *NEU*
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen Yahoo Messenger MSN Messenger
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 24.03.2008, 23:20    Titel: Antworten mit Zitat

Ich hab mir deinen Quellcode gerade nicht ganz genau durchgelesen, aber du kannst den Fehler wie folgt ermitteln:

Q(uick)BASIC mag es überhaupt nicht, wenn
1. Zwei mal die selbe Variable in verschachtelten FOR-Schleifen verwendet wird:
Code:
FOR a = 1 to 2
FOR a = 1 to 2
NEXT a
NEXT a


2. Wenn du eine ON ERROR-Anweisung innerhalb eines IF-Blocks stehen
Code:
hast:
IF a = 1 then
ON ERROR GOTO 20
END IF


Wenn beides nicht in deinem Programm vorkommt, kannst du deinen Fehler wie folgt erruieren:

die erste Hex-Zahl (0736 in deinem Fall) sagt den "Namen" der SUB aus, d.h. du nimmst die FOR-Schleife die ich in Punkt 1 beschrieben habe, und fügst sie in eine SUB ein und kompilierst es. Der Compiler gibt dir einen Fehler (nämlich "FOR-Schleifenvariable bereits vergeben") aus, mit der Adresse. Sollten diese zwei Adressen jetzt übereinstimmen, weißt du in welcher SUB der Fehler liegt.

Die Zweite HEX-Zahl (0538 in deinem Fall) sagt die Zeilenummer (oder so ähnlich zwinkern ) aus. Leider blicke ich bei dem System nicht ganz durch, wie der Compiler nummeriert. Damit du aber dem Fehler auf die schliche kommst, musst du vor den Befehlen, die dir suspekt vorkommen, die FOR-Schleife einfügen. Sollte sich irgendwann die Zeilenummer deines bisherigen Fehlers ändern, hasst du den Fehler gefunden.

Ich weiß ist recht kompliziert und zeitaufwändig. Wenn dir aber an dem Prog was liegt, dann probiers aus.

LG
Julian
_________________
Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.03.2008, 00:10    Titel: Antworten mit Zitat

Zitat:
Q(uick)BASIC mag es überhaupt nicht, wenn (...)

Ein kurzer Blick auf das Listing zeigt, dass beides nicht auftaucht.

wolfjuli hat Folgendes geschrieben:
Die Zweite HEX-Zahl (0538 in deinem Fall) sagt die Zeilenummer (oder so ähnlich zwinkern ) aus. Leider blicke ich bei dem System nicht ganz durch, wie der Compiler nummeriert. Damit du aber dem Fehler auf die schliche kommst, musst du vor den Befehlen, die dir suspekt vorkommen, die FOR-Schleife einfügen. Sollte sich irgendwann die Zeilenummer deines bisherigen Fehlers ändern, hasst du den Fehler gefunden.

Das sind Speicheradressen. Nichts weiter. -_-

Nach kurzer zeit ist klar: das GET / PUT ist schuld. also mal schön nach jedem SUB-Aufruf einen breakpoint (happy) gesetzt und geschaut, was passiert. In deiner sub Kreis wird beim ersten aufruf das bild an einer position außerhalb des SCREEN-bereichs geGETet (-12, -12).
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
wolfjuli



Anmeldungsdatum: 06.03.2008
Beiträge: 50

BeitragVerfasst am: 25.03.2008, 00:20    Titel: Antworten mit Zitat

Zitat:
Ein kurzer Blick auf das Listing zeigt, dass beides nicht auftaucht.

Sry, wenn ich dir da wiederspreche. Jan91 hat als aller erstes gepostet:

Zitat:
wenn ich des mit quickbasic 4.5 in ne exe datei umgewandelt habe (...)

_________________
Alles sollte so einfach wie möglich gemacht werden, aber nicht einfacher.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.03.2008, 00:24    Titel: Antworten mit Zitat

Sry, wenn ich dir widerspreche (und zwar ohne e vor dem i), aber du liegst vollkommen falsch. Weder verschachtelte FOR-Schleifen mit gleicher varable noch ein einziges ON ERROR tauche auf.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jan91



Anmeldungsdatum: 24.03.2008
Beiträge: 6

BeitragVerfasst am: 25.03.2008, 18:13    Titel: Antworten mit Zitat

so der fehler hat mit dem Sub kreis zu tun

ich versteh nur nicht wieso der put befehl bei -12, -12 sein soll
bzw köntesch mir mal kurz sagen was ich ändern muss.
_________________
Wer Rechtschreibfehler findet darf sie behalten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 25.03.2008, 20:43    Titel: Antworten mit Zitat

Jojo hat Folgendes geschrieben:
In deiner sub Kreis wird beim ersten aufruf das bild an einer position außerhalb des SCREEN-bereichs geGETet (-12, -12).


ehm, wie kommst du darauf oO?
die sub wird mit de parametern 320,240 aufgerufen
also wird von 320-10-2=308|240-10-2=228 bis 320+20+2=342|240+20+2=262 geGETet...
und ich schätze, 308|228 bis 342|262 liegt noch im screen-12-bereich...
was sein könnte, was ich schon öfter bemerkt habe...
wenn man die größe des arrays das die bilder aufnehmen soll nach qb's formel errechnet, funzt das manchmal (ziemlich oft bis immer bei mir sogar happy) nicht...
wie wärs wenn du das bild-array einfach mal größer DIMst?
wenn du keinen akuten arbeitsspeichermangel hast, nimm mal das doppelte xD da kann man nix falsch machen...
und dann immer kleiner ranarbeiten happy

was evtl sein könnte, dass qb es nich leiden kann wenn du in unterschiedl. programmteilen die selbe variable benutzt, aber das ist eher unwahrscheinlich...

wie wärs wenn du in SUB kreis mal statische, dh vor dem compilen eingegebene koordinaten einprogrammierst?

kann das an XP liegen? wenn ja: dosbox.sourceforge.net happy

jojo: wehe es lag nicht an sub kreis, da schreib ich nen halbemn roman... happy zwinkern
_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jan91



Anmeldungsdatum: 24.03.2008
Beiträge: 6

BeitragVerfasst am: 25.03.2008, 21:30    Titel: Antworten mit Zitat

die bild arrays hab ich schon vorher vergrößert
is mir jetzt auch egal ich sch*** jetzt auf des programm

trotzdem danke an alle die sich die mühe gemacht haben
_________________
Wer Rechtschreibfehler findet darf sie behalten.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.03.2008, 21:42    Titel: Antworten mit Zitat

Flo: ich hab einfach nen PRINT-befehl eingefügt und das programm einfach kompiliert und ausgeführt. dann kam da -12,-12 raus.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 25.03.2008, 21:45    Titel: Antworten mit Zitat

und falls ihr es mir immer noch nicht glaubt:
Code:
SUB kreis (x%, y%)
'Dieser Sub zeichnet einen Kreis und l„dt ihn in bild%

CIRCLE (x%, y%), r%, 2
PAINT (x%, y%), 2, 2
LOCATE 12, 1
PRINT "x=", x% - r% - 2
PRINT "y=", y% - r% - 2
GET (x% - r% - 2, y% - r% - 2)-(x% + r% + 2, y% + r% + 2), bild%
CLS

END SUB

Das einfügen. Funktioniert im Runtime-Modus okay, im kompilierten Modus mit BRUN ist der Ball unsichtbar und im kompilierten Modus ohne BRUN stürzt das Programm ab und zeigt die Koordinaten an. Ich wette, es liegt an den Variablennamen...
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
jan91



Anmeldungsdatum: 24.03.2008
Beiträge: 6

BeitragVerfasst am: 29.03.2008, 17:14    Titel: Antworten mit Zitat

hab noch n bissle rumprobiert und es tut jetzt
ich vermute es lag an dem Sub auffruf "kreis 320,240"
hab ich jetzt abgeändet in "kreis x%,y%"
jetzt tut´s auf jeden fall

danke an alle die geantwortet haben

gruß jan
_________________
Wer Rechtschreibfehler findet darf sie behalten.
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