Seite 1 von 3
Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 18:19
von elecsonny
Hallo Leute,
ich habe ein kleines Problem.
Ich habe in meinem Programm viele Berechnungen. Nach jeder Berechnung rufe ich zur Auswertung
über Includefile("... .pb") eine Datei auf.
Wird das Programm als .exe kompiliert gibt es kein Problem, es läuft!
Starte ich das Programm über den Debugger bekomme ich Fehler die nicht nachvollziehbar sind!
Entferne ich den Include-Aufruf der Dateien gibt es keine Fehler.
Rufe ich die Include-Dateien ohne Inhalt auf, bekomme ich die gleichen Fehler wie mit Inhalt.
Fehler heist:
in Zeile 25?
[ERROR]LoadFont[]kann nicht innerhalb eines StartDrawing[]/StopDrawing[]Blocks aufgerufen werden.
Ja, ich rufe meine Fonts ab Zeile 25 auf. Aber, ich habe weit und breit kein StartDrawing[]/StopDrawing[] aufruf.
Habt ihr eine Idee.
Gruß Elecsonny
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 18:33
von ts-soft
Code?
Da alle benötigten Hinweise fehlen, denke ich im Anfängerforum wäre Deine Frage mit
Sicherheit besser aufgehoben.
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 19:05
von elecsonny
Welche Hinweise werden benötigt?
Der Code ist sehr Groß zum Posten!
Das Programm besteht aus 31 .pb Dateien ohne BMPs und 115.588 kompilierte Zeilen.
" ...denke ich im Anfängerforum wäre Deine Frage mit
Sicherheit besser aufgehoben ..."
Wenn, Du meinst! Dann sollte aber auch hier einer dabei sein der ein änliches Problem schon hatte! Oder?
Gruß
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 19:20
von NicTheQuick
Es ist etwas ungewöhnlich eine 'Includefile'-Anweisung mitten im Code zu nutzen. Normalerweise inkludiert man alle benötigten Dateien am Anfang eines Quelltextes, damit man danach die darin enthaltenen Procedures oder ähnliches nutzen kann.
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 19:23
von Bisonte
elecsonny hat geschrieben:...
Fehler heist:
in Zeile 25?
[ERROR]LoadFont[]kann nicht innerhalb eines StartDrawing[]/StopDrawing[]Blocks aufgerufen werden.
Ja, ich rufe meine Fonts ab Zeile 25 auf. Aber, ich habe weit und breit kein StartDrawing[]/StopDrawing[] aufruf....
Dann hast Du irgendwo in deinem vielzugrossem Code zum posten ein StopDrawing() vergessen...
für alles weitere entweder Source posten oder den Glaskugelreinigungsservice auf Trab bringen....

Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 19:29
von ts-soft
elecsonny hat geschrieben:Welche Hinweise werden benötigt?
Der Code ist sehr Groß zum Posten!
Dann solltest Du den Code auf ein minimum reduzieren, mit dem man das Problem nachvollziehen kann.
Wir haben keine Glaskugeln.
Aus Deinen bisherigen Aussagen kann ich nur zu folgendem Schluß kommen:
Zeile 25 ist böse meist
Du verwendet IncludeFile falsch, besser ist es XIncludeFile am anfang des Codes zu
nutzen, ist schließlich eine Compileranweisung und keine Runtimeanweisung.
Das mit Startdrawing deutet ein Threaded-Programm an, bei dem aber keine Threadsafe aktiviert wurde.
Genug der Hellseherei, weil das kostet nur Zeit und wird auch nichts bringen, wir warten also auf Deinen
gekürzten, lauffähigen Code, der das Problem aufzeigt.
Gruß
Thomas
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 20:04
von elecsonny
Ich habe den Ausschnitt aus meiner Main.pb gepostet.
FontID1 ist die besagte Zeile 25.
Ich kann aber auch FontID1 mit FontID4 tauschen dann erscheint der Fehler bei FontID4!
Der IncludeFile Befehl ist dafür da PrgCode an verschiedene Stellen zu nutzen!
Für mich ist der IncludeFile Befehl eine Erleicherung damit ich nicht alles doppelt und dreifach programmieren muss.
Siehe PB Ref!
Code: Alles auswählen
;*** Einladen der Enummerung ***
IncludeFile("EnumVariable.pb")
;*** Schriftarten ***
Global FontID1
FontID1 = LoadFont(#schrift1, "Times New Roman", 14, #PB_Font_Bold)
Global FontID2
FontID2 = LoadFont(#schrift2, "Times New Roman", 12, #PB_Font_Bold)
Global FontID3
FontID3 = LoadFont(#schrift3, "Times New Roman", 10, #PB_Font_Bold)
Global FontID4
FontID4 = LoadFont(#schrift4, "Times New Roman", 40, #PB_Font_Bold)
;*** Globale Variablen ***
Global BImage_0, BImage_1, BImage_2, BImage_3, BImage_4, BImage_5, BImage_6, BImage_7, BImage_8, BImage_9, BImage_10
Global BImage_11, BImage_12, Image_11 ,Image_12, Image_13, Image_14, Image_15, Image_16, Image_17, Image_18
;*** Einfangen der Bilder ***
BImage_0 = CatchImage(#BImage0, ?BImage_0)
BImage_1 = CatchImage(#BImage1, ?BImage_1)
BImage_2 = CatchImage(#BImage2, ?BImage_2)
BImage_3 = CatchImage(#BImage3, ?BImage_3)
BImage_4 = CatchImage(#BImage4, ?BImage_4)
BImage_5 = CatchImage(#BImage5, ?BImage_5)
BImage_6 = CatchImage(#BImage6, ?BImage_6)
BImage_7 = CatchImage(#BImage7, ?BImage_7)
BImage_8 = CatchImage(#BImage8, ?BImage_8)
BImage_9 = CatchImage(#BImage9, ?BImage_9)
BImage_10 = CatchImage(#BImage10, ?BImage_10)
BImage_11 = CatchImage(#BImage11, ?BImage_11)
BImage_12 = CatchImage(#BImage12, ?BImage_12)
Image_11 = CatchImage(#Image11, ?Image_11)
Image_12 = CatchImage(#Image12, ?Image_12)
Image_13 = CatchImage(#Image13, ?Image_13)
Image_14 = CatchImage(#Image14, ?Image_14)
Image_15 = CatchImage(#Image15, ?Image_15)
Image_16 = CatchImage(#Image16, ?Image_16)
Image_17 = CatchImage(#Image17, ?Image_17)
Image_18 = CatchImage(#Image18, ?Image_18)
;*** Laden der Bilder ***
DataSection
BImage_0:
IncludeBinary "verdichter.bmp"
BImage_1:
IncludeBinary "verdampfer.bmp"
BImage_2:
IncludeBinary "verfluessiger.bmp"
BImage_3:
IncludeBinary "kuehlmoebel.bmp"
BImage_4:
IncludeBinary "allgemein.bmp"
BImage_5:
IncludeBinary "einstellungen.bmp"
BImage_6:
IncludeBinary "laden.bmp"
BImage_7:
IncludeBinary "speichern.bmp"
BImage_8:
IncludeBinary "berechnen.bmp"
BImage_9:
IncludeBinary "drucken.bmp"
BImage_10:
IncludeBinary "info.bmp"
BImage_11:
IncludeBinary "help.bmp"
BImage_12:
IncludeBinary "speichern.bmp"
Image_11:
IncludeBinary "logo.bmp"
Image_12:
IncludeBinary "verdichter.bmp"
Image_13:
IncludeBinary "verfluessiger.bmp"
Image_14:
IncludeBinary "allgemein.bmp"
Image_15:
IncludeBinary "verdampfer.bmp"
Image_16:
IncludeBinary "kuehlmoebel.bmp"
Image_17:
IncludeBinary "einstellungen.bmp"
Image_18:
IncludeBinary "logo_g.bmp"
EndDataSection
;*** Aufau der Fenster ***
IncludeFile("WinSeiten.pb")
IncludeFile("DefVariable.pb")
; *** Start Windows Hauptfenster ***
Open_Window_hauptseite()
;*** Software Version ***
sw_version.s = "V2.0"
;************************
; Hauptprogramm
;************************
Repeat
Event = WaitWindowEvent() ; *** Einlesen der Events aus dem Windowsfenster ***
; *** selektierte Auswahl der im Windowsfenster
Select Event
Case #PB_Event_Gadget
; *** Auslesen der Daten ***
EventGadget = EventGadget() ; *** Abfrage der Events in beiden Windowsfenster ***
EventType = EventType() ; *** Feststellung des letzten Typs des Ereignisses ***
IncludeFile "DataVariablen.pb"
; ****************************
; *** Erfassen der Buttons ***
; ****************************
;*****************************************
; Datei Laden
;*****************************************
If EventGadget = #ButtonImage_laden
IncludeFile "FuncLoad.pb"
;*****************************************
; Datei Speichern
;*****************************************
ElseIf EventGadget = #ButtonImage_speichern
IncludeFile "FuncSave.pb"
;*****************************************
; Verdichter
;*****************************************
ElseIf EventGadget = #ButtonImage_Verdichter
Open_Window_verdichter()
IncludeFile "DataVerdichter.pb"
CloseWindow(#Window_verdichter)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Verflüssiger
;*****************************************
ElseIf EventGadget = #ButtonImage_Verfluessiger
Open_Window_verfluessiger()
IncludeFile "DataVerfluessiger.pb"
CloseWindow(#Window_verfluessiger)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Allgemein
;*****************************************
ElseIf EventGadget = #ButtonImage_Allgemein
Open_Window_allgemein()
IncludeFile "DataAllgemein.pb"
CloseWindow(#Window_allgemein)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Verdampfer
;*****************************************
ElseIf EventGadget = #ButtonImage_Verdampfer
Open_Window_verdampfer()
IncludeFile "DataVerdampfer.pb"
CloseWindow(#Window_verdampfer)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Kühlmöbel
;*****************************************
ElseIf EventGadget = #ButtonImage_Kuehlmoebel
Open_Window_moebel()
IncludeFile "DataKuehlmoebel.pb"
CloseWindow(#Window_moebel)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Einstellungen
;*****************************************
ElseIf EventGadget = #ButtonImage_Einstellung
Open_Window_einstellungen()
IncludeFile "DataEinstellungen.pb"
CloseWindow(#Window_einstellungen)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Berechnung
;*****************************************
ElseIf EventGadget = #ButtonImage_berechnen
Open_Window_berechnung()
IncludeFile "DataBerechnung.pb"
CloseWindow(#Window_berechnung)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Hilfe
;*****************************************
ElseIf EventGadget = #ButtonImage_hilfe
Open_Window_hilfe()
IncludeFile "DataHilfe.pb"
CloseWindow(#Window_hilfe)
UseGadgetList(WindowID(#Window_hauptseite))
;*****************************************
; Programm Info
;*****************************************
ElseIf EventGadget = #ButtonImage_info
Open_Window_info()
IncludeFile "DataInfo.pb"
CloseWindow(#Window_info)
UseGadgetList(WindowID(#Window_hauptseite))
EndIf
;************************
; Beendung des Programms
;************************
Case #PB_Event_CloseWindow
EventWindow = EventWindow()
If EventWindow = #Window_hauptseite
Break
EndIf
EndSelect
ForEver
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 20:10
von STARGÅTE
Da es hier um Start/Stop Drawing geht, könntest du dir folgende Macros am Anfang definieren:
Code: Alles auswählen
Procedure MyStartDrawing(Output.i, FileName.s, Line.i)
Protected Result.i = StartDrawing(Output)
If Result
Debug "StartDrawing, OK, "+FileName+", "+Str(Line)
ProcedureReturn Result
Else
Debug "StartDrawing, FAIL, "+FileName+", "+Str(Line)
EndIf
EndProcedure
Macro StartDrawing(Output)
MyStartDrawing(Output, #PB_Compiler_Filename, #PB_Compiler_Line)
EndMacro
Procedure MyStopDrawing(FileName.s, Line.i)
Protected Result.i = StopDrawing()
If Result
Debug "StopDrawing, OK, "+FileName+", "+Str(Line)
ProcedureReturn Result
Else
Debug "StopDrawing, FAIL, "+FileName+", "+Str(Line)
EndIf
EndProcedure
Macro StopDrawing()
MyStopDrawing(#PB_Compiler_Filename, #PB_Compiler_Line)
EndMacro
; Beispiel:
StartDrawing(ImageOutput(CreateImage(#PB_Any, 32, 32)))
StopDrawing()
StopDrawing()
Hier bekommst du im Debugger einen Bericht, wo Start und wo Stop aufgerufen wird, und ob es erfolgreich war.
Re: Fehlermeldung durch Includefile(".....
Verfasst: 10.02.2013 20:14
von ts-soft
IncludeFile hat im Eventloop nichts zu suchen, das ist eine Compileranweisung!
Man kann eine Datei nur einmal fehlerfrei einfügen. XIncludeFile am anfang des
Codes.
Aber das wurde bereits gesagt, wäre nett, wenn Du das auch befolgen würdest.
GELÖSCHT
Verfasst: 10.02.2013 20:55
von mirca
GELÖSCHT