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:

EXE stürzt ab

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



Anmeldungsdatum: 14.01.2005
Beiträge: 2010

BeitragVerfasst am: 07.07.2006, 15:57    Titel: EXE stürzt ab Antworten mit Zitat

Hallo.

Neuerdings stürzt mir mein Programm mit einer Windows-Fehlermeldung ab. Also gut, Programm
mit -exx kompiliert, und siehe da, die Fehlermeldung lautet:
Zitat:

Aborting due to runtime error 1 (illegal function call) at line 73 of c:/test/tmp.bas

Die betreffende Zeile lautet
Code:

DIM SHARED Fonts(32 TO 255, 0, 0) AS BYTE

Ich weiß echt nicht, wo da der Fehler sein soll...

Weiß jemand Rat?

Danke im Voraus,
jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.07.2006, 16:21    Titel: Antworten mit Zitat

Kannst du mal etwas mehr Code rund um Zeile 73 zeigen?
Oder besser noch den ganzen Code?
Bei der druchnummerirung der Zeilen gibt es ja auch verschiedene System:

Ist
Code:
? _
"Hello World"
sleep

3 Zeilen lang oder ist das eine Zeile lang?
Code:
? "Hello World": sleep

_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.07.2006, 17:19    Titel: Antworten mit Zitat

Dem kann ich nur zustimmen!
Die Dim-Anweisung allein kompiliert, ergibt nämlich bei FB0.16bSE keinen Fehler..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Sebastian
Administrator


Anmeldungsdatum: 10.09.2004
Beiträge: 5969
Wohnort: Deutschland

BeitragVerfasst am: 07.07.2006, 17:57    Titel: Antworten mit Zitat

Vielleicht machst du die SHARED Anweisung innerhalb einer SUB/FUNCTION?
_________________

Die gefährlichsten Familienclans | Opas Leistung muss sich wieder lohnen - für 6 bis 10 Generationen!
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Michael Frey



Anmeldungsdatum: 18.12.2004
Beiträge: 2577
Wohnort: Schweiz

BeitragVerfasst am: 07.07.2006, 18:53    Titel: Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
Vielleicht machst du die SHARED Anweisung innerhalb einer SUB/FUNCTION?

Das sollte aber keinen Laufzeit Fehler geben, sondern vom Compiler abgefangen werden.
_________________
http://de.wikibooks.org/wiki/FreeBasic Jede Hilfe für dieses Buch ist Willkommen!
http://de.wikibooks.org/wiki/FreeBasic:_FAQ FAQ zu Freebasic (im Aufbau, hilfe Willkommen)
Neu mit Syntax Highlight
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.07.2006, 19:54    Titel: Antworten mit Zitat

Sebastian hat Folgendes geschrieben:
Vielleicht machst du die SHARED Anweisung innerhalb einer SUB/FUNCTION?
Naja, ich finde, daß du im amerikanischen Forum etwas ausführlicher gewesen bist..
..ich wiederhole mich gern: QuellCode posten könnte helfen..
(v1ctor z.B. reagiert äußerst ungehalten, wenn zu Fragen kein Quellcode gepostet wird.
Mal schauen, vllt. finde ich die Seite wieder..)
Ich habe einfach nur probiert, was der Compiler sagt, wenn ich folgenden
Code:
DIM SHARED Fonts(32 TO 255, 0, 0) AS BYTE
Sleep
übersetze..
Wie erwartet, sagt er nix, denn FB kann bis zu 4 Dimensionen vertragen..
(Würde also für eine TastenTabelle mit Normal, Shift, Control und Alt reichen grinsen)
..auch die Indizes 0 sind syntaktisch korrekt.
Wie gesagt, war nur ein Test..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
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: 07.07.2006, 22:31    Titel: Antworten mit Zitat

@Michael Frey: Ich benutze das _ nicht, und auch mehrere Befehle in einer Zeile kommen nicht vor,
daher sollte Zeile 73 schon stimmen.

Um die Zeile 73 herum sind aber nur DECLAREs, also frage ich mich, wo der Fehler liegen soll...
Der eigentliche Fehler liegt in der Schriftroutine, hier deren Quellcode:
Code:

' *****************************************************************************
' Diese SUB gibt einen Text im aktuell geladenen Font aus
sub PrintFont (Destination as any ptr = 0, xpos as integer, ypos as integer, Text as string, farbe as long = rgb(0, 0, 0), Umbruch as integer = 0, MaxPositionX as integer = 800)

    dim CharCount as integer
    dim char as string
    dim as integer mainxpos, mainypos
    mainxpos = xpos
    mainypos = ypos
    for CharCount = 1 to len(Text) step 1
        char = mid$(Text, CharCount, 1)
        CharIndex = asc(char)
        if (CharIndex > 31) then
            for y = 1 to MaxFontYWidth step 1
                for x = 1 to ubound(Fonts, 2) step 1
                    if Fonts(CharIndex, x, y) then
                        pset Destination, (x + mainxpos, y + mainypos), farbe
                    end if
                next x
            next y
        elseif char = chr$(13) then
                mainxpos = xpos
                mainypos+ = MaxFontYWidth
        end if
        mainxpos+ = FontXWidth(CharIndex)
        if (mainxpos > MaxPositionX) and Umbruch then
            mainxpos = xpos
            mainypos+ = MaxFontYWidth
        elseif (mainxpos > MaxPositionX) and (Umbruch = 0) then
            exit for
        end if
    next CharCount

end sub

Denn wenn diese Routine nicht aufgerufen wird, erscheint der Fehler nicht...
Allerdings sehe ich da nichts Falsches...

/edit: Wenn ich diese beiden Zeilen auskommentiere und ersetze, dann klappt es ohne Probleme:
Code:

char = mid$(Text, CharCount, 1)
CharIndex = asc(char)

Frag mich trotzdem wo da der Fehler ist...

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.07.2006, 22:43    Titel: Antworten mit Zitat

Ahhh, danke ich schaus mir gleich mal an..
http://www.freebasic.net/forum/viewtopic.php?t=2668
..inzwischen habe ich auch die Seite gefunden, die zeigt, wie v1ctor reagieren kann grinsen
(ganz am Ende..)
[Edit]
Du hast geschrieben:
Code:
Dim shared Fonts(32 To 255, 0, 0) As Byte

Im UP schreibst du:
Code:
For x=1 To UBound(Fonts, 2)

Kann nicht gehen, weil UBound(Fonts, 2)=0 und x fängt bei 1 an und wird um 1 erhöht..
..vllt. liegts daran
btw: Step 1 ist default und kann weggelassen werden..
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
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: 07.07.2006, 23:07    Titel: Antworten mit Zitat

Nene, wenn der Font geladen wird, ist die zweite/dritte Dimension ja nicht mehr 0... traurig
Das Array ist ja dynamisch...

Das STEP 1 hab ich mir halt angewöhnt, ich find's übersichtlicher. durchgeknallt
Es tut ja keinem weh zwinkern

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.07.2006, 23:17    Titel: Antworten mit Zitat

Schade, mit den Informationen, die ich hatte, wärs das gewesen..
..tja, wennde nicht mehr rausrückst.. lachen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
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: 07.07.2006, 23:19    Titel: Antworten mit Zitat

Na zwinkern

Ich hab den Fehler gefunden: Ich hab jetzt das OPTION BASE 1 entfernt, und schon klappt's... Strange - ähm - seltsam grinsen

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 07.07.2006, 23:37    Titel: Antworten mit Zitat

Hättest du gleich den ganzen Code gepostet, wären wir schon viel eher darauf gekommen..
Bin mal gespannt auf deine Erklärung im freeBasic.net/forum grinsen
btw: Option Base 1 bedeutet, daß alle Indizes mit 1 anfangen..
kann sein, daß dein dynamisches Array da eine gewisse Eigendynamik entwickelt vor lachen auf dem Boden rollen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
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: 08.07.2006, 15:16    Titel: Antworten mit Zitat

Schon klar, ich weiß was OPTION BASE 1 bedeutet. mit den Augen rollen
Im englischen Forum hat ja einer geschrieben, ich sollte das Array mit
Code:
DIM Fonts(32 TO 255, 1, 1) AS BYTE

dimensionieren, hat aber nichts gebracht.
Daher hab ich mir gedacht, dass das OPTION BASE 1 nichts damit zu tun hat, weißt du? zwinkern

jb
_________________
Elektronik und Programmieren
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ytwinky



Anmeldungsdatum: 28.05.2005
Beiträge: 2624
Wohnort: Machteburch

BeitragVerfasst am: 08.07.2006, 16:53    Titel: Antworten mit Zitat

Wie du aus freeBasic.net/forum weißt, habe ich die Dimensionierung mit 0 getestet..
..und es funktioniert zwinkern
Obwohl logisch wäre es, wenn es nicht funktionierte..
Dim Irgendwas(1) bedeutet, daß Irgendwas EIN Element hat:
Je nach Option Base mit 1 oder 0 bezeichnet.
Demnach würde Dim Irgendwas(0) bedeuten, daß Irgendwas KEIN Element hat..
..aber halt, bei Option Base 0 hat es EIN Element:Irgendwas(0)
Und was passiert, wenn..
..und wenn dann noch $Dynamic Oder Option Dynamic ins Spiel kommt..
($Dynamic is deprecated..)
..dann nur noch ReDIMmen..
Ich glaube, da ist noch'n Torturial fällig lachen
Gruß
ytwinky
_________________
v1ctor hat Folgendes geschrieben:
Yeah, i like INPUT$(n) as much as PRINT USING..
..also ungefähr so, wie ich GOTO..
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. 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