Seite 2 von 2
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 10.04.2020 11:55
				von Lord
				MightyMAC hat geschrieben:...
EDIT: Ich habe jetzt gerade PB 5.72 64-bit installiert. Hier funktioniert es ohne Probleme. D.h. das Problem tritt bei allen 32-bit Versionen auf. Das sollte es aber nicht, oder?
Das kann ich nicht bestätigen. Unter Win7 mit PB5.72LTSx86 erhalte ich als Ergebnis: 
WholeHeight=47882.8125
Es ist exakt das Ergebnis wie mit der x64-Version.
 
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 10.04.2020 12:16
				von MightyMAC
				Mit beiden Procedures?
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 10.04.2020 13:53
				von Andesdaf
				Kann es unter 5.71 x86 bestätigen.
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 10.04.2020 14:23
				von HeX0R
				Scheint tatsächlich den Stack zu verknisknaddeln, zumindest bei x86 (und Win10?)
Aber der Code ist absolut furchtbar zur Ursachenforschung (o.k. nicht nur dafür...)!
Ich habe das mal aufs wesentliche reduziert:
Code: Alles auswählen
EnableExplicit
Procedure.d GetLineHeight()
	
	VectorFont(LoadFont(0, "Segoe UI", 12), 12)
	VectorTextHeight("a")
  ProcedureReturn 15.2
EndProcedure
Procedure.d GetWholeHeight()
	Protected Result.d
	
	Result = 0.0
	Debug "Stimmt: " + GetLineHeight()
	Result + GetLineHeight()
	Debug "Stimmt nicht: " + Result
  ProcedureReturn Result
EndProcedure
OpenWindow(0, 0, 0, 500, 300, "Test")
CanvasGadget(0, 0, 0, 500, 300)
StartVectorDrawing(CanvasVectorOutput(0))
Debug "Stimmt natürlich auch nicht: " + GetWholeHeight()
StopVectorDrawing()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
 
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 10.04.2020 16:00
				von mk-soft
				Die VectorDrawing zerstört unter Windows 10 (PB-X86) die Floating-Point Registers (Floating-Point-Stack?)
Habe den ASM-Code und den Stack (ESP) überprüft. Stack (ESP) ist Ok
Code: Alles auswählen
EnableExplicit
LoadFont(0, "Segoe UI", 12)
Procedure.d GetLineHeight(Font)
  Protected r1.d
  
  If StartVectorDrawing(WindowVectorOutput(0))
    VectorFont(FontID(Font))
    r1 = VectorTextHeight("a")
    StopVectorDrawing()
  EndIf
  
  ProcedureReturn r1
EndProcedure
Procedure.d GetLineHeight2(Font)
  Protected r1.d
  
  If StartDrawing(WindowOutput(0))
    DrawingFont(FontID(Font))
    r1 = TextHeight("a")
    StopDrawing()
  EndIf
  
  ProcedureReturn r1
EndProcedure
Procedure.d GetWholeHeight()
   Protected Result.d
   
   Debug "VectorDrawing"
   Result = 0.0
   Debug "Ok: " + GetLineHeight(0)
   Result + GetLineHeight(0)
   Debug "Faild: " + Result
   Debug "2dDrawing"
   Result = 0.0
   Debug "Ok: " + GetLineHeight2(0)
   Result + GetLineHeight2(0)
   Debug "Ok: " + Result
  ProcedureReturn Result
EndProcedure
OpenWindow(0, 0, 0, 500, 300, "Test")
Debug "Result: " + GetWholeHeight()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
 
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 10.04.2020 16:24
				von mk-soft
				
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 11.04.2020 11:14
				von Lord
				MightyMAC hat geschrieben:Mit beiden Procedures?
Mit beiden Prozeduren.
 
			 
			
					
				Re: Inline-Berechnungen funktionieren nicht (mehr)
				Verfasst: 12.04.2020 17:03
				von MightyMAC
				Danke an euch alle für eure Rückmeldungen und insbesondere an mk-soft für die Bug-Meldung. Das Projekt, das mir vor einem halben Jahr Probleme bereitet hat verwendet die PB-Vector-Library nicht, allerdings verwende ich dort GDI+. Verwendet das auf Betriebssystemseite zufällig die selben Bibliotheken/Resourcen?