Mijn FMain crasht op het ophalen van settings (Projecteigenschappen component Settings: gb.settings).
Gambas 3.14.3 en Gambas 1.17.3.
Eigenaardig genoeg werken de settings wel in MMain en FAbout, enkel niet in FMain.
Foutmelding:
“Geen reeks in FMain:2288”
Vervelend dat de foutmeldingen vertaald zijn als je daarop wil zoeken op het web.
Ik veronderstel dat de Engelstalige iet zou zijn als “Not an array (23) “?
Wat verklaard wordt als:
You try to use the array operator [] on something that does not accept it.
Ik heb de schrijfwijze van de code gecheckt, die is ok en werkt elders wel.
Settings["Report/TitlesOn"] = mniReportTitles.Checked
Ik zoek nog uit wanneer het juist begonnen is, want vorige versies van het programma werkten wel en gebruikten ook de settings.
Ik heb ondertussen een nieuwe versie van een library gebruikt, en menu’s bijgemaakt waarvan ik de checked toestand in settings bewaar/eruit ophaal, en settings code gegenereerd met een ander programma, allemaal dingen om te checken dus.
Oplossing
Kies in plaats van “Run” (F5) voor “Compile” (F7), dan zie je de waarschuwingen (warnings).
Daar zie je:
Klasse FMain, Lijn 9, Klassenaam verborgen door globale declaratie: Settings
Dat is niet erg behulpzaam, maar in FMain.Form op lijn 22 gebeurt het:
{ Settings Menu
}
Er is dus in een menu iets dat de naam “Settings” heeft… en dat geeft een conflict met de Settings component.
In de IDE terug te vinden met de menu editor (form, rechtsklik, menu-editor) of CTRL-e
Daar blijkt het een spacer te zijn, een leeg menu item dat enkel dient om een onderverdeling te maken. Waarschijnlijk heeft die per vergissing de naam Settings gekregen, bv door per vergissing op een toetsencombinatie voor plakken te drukken als er nog “Settings” in de buffer zat.
Verander “Settings” in een meer menu-geralateerde naam, bv mniSpacer.
Hieraan zie je weer het belang van de naamgeving. Ik gebruik voor menu’s een verschillende naam voor de hoofd en de sublijnen:
mnuFile : voor het hoofdmenu, zichtbaar in de menubalk.
mniFileOpen : voor het submenu, onder File.
Raadsel opgelost, klaar.