CreateMenu mit #PB_Any Fehler

In dieser Linux-Ecke dürfen nur Themen rund um Linux geschrieben werden.
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
DePe
Beiträge: 153
Registriert: 26.11.2017 16:17
Wohnort: Wien
Kontaktdaten:

CreateMenu mit #PB_Any Fehler

Beitrag von DePe »

Ich bin beim Versuch von Windows auf Linux umzusteigen, habe also wenig Linux Kenntnisse.
Aktuell verwende ich PureBasic v5.61 x64 mit Debian Strech v9.2.1 amd64 und Xfce v4.12 als Desktop.

Mit dem leicht geänderten Beispielcode aus der Hilfe gibt es einen Speicherzugriffsfehler.
Man kann das Menü nicht mit der Konstante #PB_Any erstellen.
Ist das ein PureBasic-Fehler?

Peter

Code: Alles auswählen

EnableExplicit

Global miWindow.i
Global miMenu.i
Global miEvent.i

Procedure TestHandler()
   Debug "Test menu event"
EndProcedure

Procedure QuitHandler()
   Debug "Quit menu event"
   End
EndProcedure

miWindow = OpenWindow(#PB_Any, 100, 100, 200, 50, "Click test", #PB_Window_SystemMenu)

miMenu = CreateMenu(#PB_Any, WindowID(miWindow)) ; Error when clicking on the menu: "[ERROR] Invalid memory access".
; miMenu = 0 : CreateMenu(miMenu, WindowID(miWindow)) ; OK.
Debug "miMenu = " + miMenu

MenuTitle("File")
MenuItem(0, "Test")
MenuItem(1, "Quit")

BindMenuEvent(miMenu, 0, @TestHandler())
BindMenuEvent(miMenu, 1, @QuitHandler())

Repeat
   miEvent = WaitWindowEvent()
Until miEvent = #PB_Event_CloseWindow
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: CreateMenu mit #PB_Any Fehler

Beitrag von ts-soft »

Ich hab jetzt mal kurz mit PB 5.46 beta 1 getestet, unter XUbuntu. Keine Probleme.
Werde es aber später nochmal mit PB 5.61 testen, im Moment leider keine Möglichkeit.
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
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: CreateMenu mit #PB_Any Fehler

Beitrag von ts-soft »

So, mit PB 5.61 nochmals getested, unter Linux Mint Cinnamon 18.2

Keine Probleme, funktioniert einwandfrei!
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
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CreateMenu mit #PB_Any Fehler

Beitrag von mk-soft »

Kann den Bug unter Ubuntu bestätigen.

X64-System
(VM) Ubuntu 17.10; PB v5.46 (Beate 1); PB v5.45 ; PB v5.60; PB ,5.61
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
DePe
Beiträge: 153
Registriert: 26.11.2017 16:17
Wohnort: Wien
Kontaktdaten:

Re: CreateMenu mit #PB_Any Fehler

Beitrag von DePe »

Danke für den Test.
Ich habe den Grund für den Fehler gefunden, weiß aber nicht was er bedeutet.
Da die kompilierten Programme vom Dateimanager Thunar nicht gestartet werden können, habe ich im englischen Forum gesucht. Dort gibt es die Lösung mit der Zeile

Code: Alles auswählen

ImportC "-no-pie" : EndImport
Damit startet das Programm aus dem Dateimanager normal und wird auch nicht mehr als Shared Library erkannt. Den Speicherzugrifffehler gibt es damit nicht mehr.
Die zurückgegebene Nummer für miMenu ist jetzt auch sehr viel kleiner:
vorher: miMenu = 93898407024072
jetzt: miMenu = 10751704

Hier ist der Link zum englischen Forum:
PB5.44 - PB 5.51B1 - Compiled program flagged as Shared lib
shared object and how to fix?

Peter
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: CreateMenu mit #PB_Any Fehler

Beitrag von ts-soft »

Okay, wenn es hilft!

Du kannst jetzt entweder auf ein Linux umsteigen, das den Bug nicht hat (z.B. 16.04 LTS) oder immer diese Zeile hinzufügen, weil die stört auch andere Versionen nicht.

PS: Finde es aber traurig, das so ein Bug in Linux (nicht in PB) nach über ein Jahr nicht gefixed wurde!
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
DePe
Beiträge: 153
Registriert: 26.11.2017 16:17
Wohnort: Wien
Kontaktdaten:

Re: CreateMenu mit #PB_Any Fehler

Beitrag von DePe »

Bin jetzt etwas ratlos, ob ich mit Linux und PureBasic weitermachen soll.
Bei diesem Beispiel aus der Hilfe gibt es ebenfalls Fehler wenn das Menü eine Checkbox hat.

Code: Alles auswählen

If OpenWindow(0, 200, 200, 200, 100, "SetMenuItemState Example")
   If CreateMenu(0, WindowID(0))
      MenuTitle("Project")
      MenuItem(1, "Changed")
      SetMenuItemState(0, 1, 1)    ; set check mark for the previously created menu item
   EndIf
   Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Bei einem etwas größerem Programm stürtzt die IDE mit einem Speicherzugriffsfehler ab, ebenfalls wegen der Checkbox im Menü. Das kompilierte Programm läuft ohne Fehler weiter.

Peter
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: CreateMenu mit #PB_Any Fehler

Beitrag von ts-soft »

Warum wechselst Du nicht die Linux-Version? Alles andere funktioniert doch.
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
DePe
Beiträge: 153
Registriert: 26.11.2017 16:17
Wohnort: Wien
Kontaktdaten:

Re: CreateMenu mit #PB_Any Fehler

Beitrag von DePe »

Vor einen halben Jahr hatte ich Linux Mint, Ubuntu und OpenSUSE probiert. Leider ist mein PC damit nach ein paar Minuten immer eingefroren. Jetzt habe ich gelesen, dass es wahrscheinlich an der CPU liegt, Intel Celeron J1900, und man einen Kernelparameter angeben kann damit das nicht passiert. Mit dem aktuellen Debian funktionert der PC aber ohne Probleme. Bei einem Wechsel ist also wieder die Frage ob es diesmal funktioniert. Bis ich eine Boot-DVD heruntergeladen habe dauert es einen ganzen Tag.
Also bei dem "Alles andere funktioniert doch." musste ich schmunzeln.

Das mit der Kompileroption PIE und PIC dürfte Absicht sein, und kein Bug. Könnte also auch andere Distributionen betreffen die auf Debian aufbauen. Als Linux-Neuling ist das alles ziemlich schwierig.

Peter
Benutzeravatar
mk-soft
Beiträge: 3695
Registriert: 24.11.2004 13:12
Wohnort: Germany

Re: CreateMenu mit #PB_Any Fehler

Beitrag von mk-soft »

Bei mir laufen verscheidene Versionen von Windows und Linux auf Viruell-Machines (Mac Parallels)

Empfehlen kann ich VirtualBox (Oracel)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten