Fehlermeldung durch Includefile(".....

Für allgemeine Fragen zur Programmierung mit PureBasic.
elecsonny
Beiträge: 5
Registriert: 10.02.2013 17:41

Fehlermeldung durch Includefile(".....

Beitrag 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
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fehlermeldung durch Includefile(".....

Beitrag von ts-soft »

Code? :freak:

Da alle benötigten Hinweise fehlen, denke ich im Anfängerforum wäre Deine Frage mit
Sicherheit besser aufgehoben.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
elecsonny
Beiträge: 5
Registriert: 10.02.2013 17:41

Re: Fehlermeldung durch Includefile(".....

Beitrag 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ß
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8838
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Fehlermeldung durch Includefile(".....

Beitrag 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.
Benutzeravatar
Bisonte
Beiträge: 2476
Registriert: 01.04.2007 20:18

Re: Fehlermeldung durch Includefile(".....

Beitrag 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.... ;)
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fehlermeldung durch Includefile(".....

Beitrag 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 :mrgreen:
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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
elecsonny
Beiträge: 5
Registriert: 10.02.2013 17:41

Re: Fehlermeldung durch Includefile(".....

Beitrag 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
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7039
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: Fehlermeldung durch Includefile(".....

Beitrag 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.
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: Fehlermeldung durch Includefile(".....

Beitrag 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.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
mirca
Beiträge: 169
Registriert: 13.11.2011 16:05

GELÖSCHT

Beitrag von mirca »

GELÖSCHT
Zuletzt geändert von mirca am 17.10.2013 11:43, insgesamt 1-mal geändert.
Antworten