Seite 1 von 1

Raspberry Font Problem (gelöst)

Verfasst: 17.03.2024 20:26
von Armkrie
Hallo,

habe ein Problem mit Purebasic beim Raspberry.
Ich hoffe mir kann jemand helfen.

Wenn ich einen Schriftfont verwende, beendet sich das Programm mit einem Speicherzugriff-Fehler.
Werden die Zeilen 'SetGadgetFont' auskommentiert, funktioniert das Programm.

Auch auf meinem Windows-Rechner funktioniert es.
Es hat auch schon mit der Vorgängerversion von 'bookworm' funktioniert.

Kann es sein das Purebasic nicht richtig mit dem aktuellen Betriebssystem vom Raspberry funktoniert?

Vielleicht hat schon jemand erfahrung hiermit gesammelt.


Konfiguration:
Raspberry Pi 3 Model B
Raspberry Pi 7-Inch Touch Screen Display
Raspberry Pi OS with desktop (64-bit) vom 05.12.2023, Version 12 (bookworm)
PureBasic 6.04 LTS (x64)

Bild

TestCode:

Code: Alles auswählen

;-* Globale Variablen anlegen *
  Global FontID1.l
  Global FontID2.l
  Global FontID3.l
  Global FontID4.l

;-* Globale Variablen zuweisen *
  FontID1 = LoadFont(1, "FreeSans", 16, #PB_Font_Bold)
  FontID2 = LoadFont(2, "FreeSans",  6)
  FontID3 = LoadFont(3, "FreeSans", 10, #PB_Font_Bold)
  FontID4 = LoadFont(4, "FreeSans", 13, #PB_Font_Bold)

;-* Hauptfenster öffnen *
  If OpenWindow(0, 0, 0, 140, 150, "SchriftTest", #PB_Window_ScreenCentered | #PB_Window_SystemMenu)
    SetWindowColor (0, $A9A9A9)

    TextGadget     (0,   5,   5,  130,  30, "Text 1")
    SetGadgetColor (0, #PB_Gadget_BackColor , $A9A9A9)
    SetGadgetFont  (0, FontID1)

    TextGadget     (1,   5,  40,  130,  30, "Text 2")
    SetGadgetColor (1, #PB_Gadget_BackColor , $A9A9A9)
    SetGadgetFont  (1, FontID2)

    TextGadget     (2,   5,  75,  130,  30, "Text 3")
    SetGadgetColor (2, #PB_Gadget_BackColor , $A9A9A9)
    SetGadgetFont  (2, FontID3)

    TextGadget     (3,   5, 110,  130,  30, "Text 4")
    SetGadgetColor (3, #PB_Gadget_BackColor , $A9A9A9)
    SetGadgetFont  (3, FontID4)
  EndIf

;-* Eingabeschleife *
  Repeat
    Event = WaitWindowEvent()

    Select Event
      Case #PB_Event_CloseWindow
        Break
    EndSelect
  ForEver

Re: Raspberry Font Problem

Verfasst: 17.03.2024 21:47
von STARGÅTE
Der Rückgabewert von LoadFont() ist eine Integer (.i), keine Long (.l)!

Code: Alles auswählen

Global FontID1.i
  Global FontID2.i
  Global FontID3.i
  Global FontID4.i

Re: Raspberry Font Problem

Verfasst: 17.03.2024 22:07
von Armkrie
Besten Dank für den Hinweis.
Jetzt funktioniert es.

Komisch das unter Windows noch nie ein Fehler deswegen angezeigt wurde.
Weder unter 32, noch bei 64 Bit.

Re: Raspberry Font Problem

Verfasst: 17.03.2024 23:23
von STARGÅTE
Armkrie hat geschrieben: 17.03.2024 22:07 Komisch das unter Windows noch nie ein Fehler deswegen angezeigt wurde.
Weder unter 32, noch bei 64 Bit.
Es wurde erst vor kurzem was im Speichermanagement von PureBasic geändert, sodass solche IDs unter 64 bit größere Zahlen sein können.
Unter Windows waren die Zahlen möglicherweise gerade noch klein genug um in eine Long (32 bit) zu passen und unter x86 (32 Bit) ist eine Integer = Long, also gab es da sowieso kein Problem.