Seite 1 von 1

DisableDebugger und StartDrawing 4.10

Verfasst: 14.12.2007 09:43
von Hugo
Hi,

ich habe folgendes in Zusammenhang mit Disable/EnabeDebugger und StartDrawing in der Version 4.10 festgestellt (mit 4.02 tritt das nicht auf).

Wenn ich vor dem StartDrawing ein DisableDebugger und direkt dahinter ein EnableDebugger setzte, wird der nachfolgenden 2D Befehl (Box usw.) mit der Fehlermeldung "StartDrawing() must be called before a 2DDrawing function" beendet.

Das Ganze funktioniert, wenn ich das DisableDebugger hinter den letzen 2D Befehl setze.

Ob das nun ein Bug ist oder nicht weiß ich nicht, es sollte dann aber denke ich, in der Doku erwähnt werden.

Gruß,
Hugo

Code: Alles auswählen

If OpenWindow( 0, 0, 0, 300, 300, "Test", #PB_Window_ScreenCentered | #PB_Window_SystemMenu ) 
  
  If CreateGadgetList( WindowID( 0 ) ) 
    CreateImage( 0, 200, 30 ) 
    
    DisableDebugger
    DraStat = StartDrawing( ImageOutput( 0 ) ) 
    EnableDebugger
    If DraStat
      Box( 0, 0, 200, 30,RGB( 255, 255, 155 ) ) 
      StopDrawing() 
    EndIf
    ;EnableDebugger
    
    ImageGadget( 1, 5, 20, 200, 30, ImageID( 0 ) ) 
    
    Repeat 
      Select WaitWindowEvent() 
        Case #WM_CLOSE 
          End 
      EndSelect 
    ForEver
    
  EndIf
  
EndIf

Verfasst: 14.12.2007 10:22
von DrShrek
Ich habe es mal ins engl. Board als BUG gestellt.

Verfasst: 14.12.2007 13:17
von xperience2003
Wenn ich vor dem StartDrawing ein DisableDebugger und direkt dahinter ein EnableDebugger
warum machst du auch so'n scheiss :twisted:

Verfasst: 14.12.2007 14:11
von Hugo
@xperience2006

bevor du hier mit solchen Kraftausdrücken herumwirft, solltes du dir mal überlegen, ob das notwendig ist!

Wenn du nicht weißt, wozu ich das brauche, dann kannst du ja fragen - aber das geht auch ohne Kraftausdrücke!

Hier kannst du nachlesen, warum für mich das notwendig ist: http://www.purebasic.fr/english/viewtop ... highlight=

Schönen Tag noch,
Hugo

Verfasst: 14.12.2007 14:49
von hardfalcon
Du arbeitest da mit Threads. Das wirft 2 Fragen auf:
1.) Hast du ThreadSafe in den Compileroptionen aktiviert?
2.) Ist dir bewusst dass der Debugger bei Codes, die Threads verwenden, meist (immer?) völlig falsche Zeilennummern als Fehlerursache zurückliefert?

Was xperiences "Kraftausdrücke" betrifft: Sorry, aber er hat Recht. So nen "Bug" (ich habe starke Zweifel, dass es einer ist) umschifft man nicht, indem man den Debugger abschaltet... Ohne debugger wird da auch noch ein Fehler sein (wenn es denn ein Bug ist), du bemerkst ihn halt nur nicht mehr.

//EDIT: mein Posting bezieht sich auf den Code, den du im englischen Forum gepostet hast.

Verfasst: 14.12.2007 17:20
von PMV
hardfalcon hat geschrieben:2.) Ist dir bewusst dass der Debugger bei Codes, die Threads verwenden, meist (immer?) völlig falsche Zeilennummern als Fehlerursache zurückliefert?
Öhm ... wenn ThreadSafe aktiviert ist, gibt der Debugger die richtige Zeile
an :wink:

Zu deinem Code / Problem ...
xperience2003 hats eventuell etwas hart ausgedrückt, aber ich frag mich
auch grad so ein wenig, was dass für einen Sinn haben soll. ...
EnableDebugger oder DisableDebugger ... aber beides ergibt so, wie du es
da nutzt ... keinen Sinn. Der Debugger regestriert vermutlich den Aufruf
von StartDrawing() und wenn er vorher deaktiviert wird, bzw. erst
dannach wieder aktiviert ... dann kann er den Aufruf natürlich nicht
registrieren :wink:

Selbst wenn man das als Bug bezeichnen will ... ist es eher so unrelevant,
das man sich nicht darum kümmern muss ... weil es einfach sinnlos ist. :D

MFG PMV

Verfasst: 15.12.2007 14:25
von xperience2003
hi

jap, sorry, war eher lustig als hart gemeint

aber bei dem startdrawing und stopdrawing , das ist eine sequence
in der einige befehle zum abstuerzen fueren koennen

Verfasst: 15.12.2007 15:01
von DrShrek
xperience2003 hat geschrieben:hi

jap, sorry, war eher lustig als hart gemeint

aber bei dem startdrawing und stopdrawing , das ist eine sequence
in der einige befehle zum abstuerzen fueren koennen
Es sollte niemals Abstürze geben. Das ist einfach eine Frage des Design. ;-)