Ten eerste mijn code anders wordt mijn vraag niet duidelijk:

Dim Waarde As byte
Dim String1[10] As byte
Dim String2[9] As byte
Dim String3[9] As byte
Dim String4[9] As byte

Str String1 = "HoofdMenu", 0
Str String2 = "SubMenu2", 0
Str String3 = "SubMenu1", 0
Str String4 = "SubMenu3", 0

Waarde = 1 of 2 of 3 of 4

!!Print At 1,1, Str String.Waarde!!

De code zoals tussen !! staat werkt niet. Wat mijn bedoeling is is om wanneer Waarde bijv. 1 is op 1,1 String1 te laten printen op mijn lcd. (en wanneer Waarde = 2, String2 te laten printen).

Is hier een oplossing voor in PicBasic. Anders zou ik het zo moeten doen

If Waarde = 1 Then
Print At 1,1, Str String1
Else If Waarde = 2 Then
Print At 1,1, Str String2
enz.
...
enz.
...

Dit kost me erg veel regels code, ik heb gezocht in de help file van Proton Plus maar kom het niet direct tegen.
Misschien dat hier iemand het weet!! Hoop ut!!

Probeer deze eens
Dim Waarde As byte
Dim String1[10] As byte
Dim String2[9] As byte
Dim String3[9] As byte
Dim String4[9] As byte

Str String1 = "HoofdMenu", 0
Str String2 = "SubMenu2", 0
Str String3 = "SubMenu1", 0
Str String4 = "SubMenu3", 0

Waarde = 1 of 2 of 3 of 4

Print At 1,1, Str String[Waarde]
of
Print At 1,1, dec String[Waarde]

Dat kan natuurlijk nooit.
Je geeft de variabelen de naam 'String1' en 'String2' enz.
Dat cijfer in die naam kun je dan niet ineens als variabele gebruiken.
Ik kan je echter nog niet veel verder helpen omdat ik nog niet met strings bezig ben geweest.
Het cijfer zal ook niet rood gekleurd zijn zoals getallen normaal wel doen.

Lees de HELP bestanden eens.

Je zou het nog met SELECT CASE kunnen vereenvoudigen.

CURSOR 1, 1
SELECT CASE Waarde
CASE 1: PRINT STR String1
CASE 2: PRINT STR String2
CASE 3: PRINT STR String3
CASE 4: PRINT STR String4
END SELECT

Met indirecte addressing kun je mogelijk ook wel wat doen. Dan zou je via een select case het adres van de benodigde string variabele in FSR kunnen laden (FSR = VarPtr(String1). Dan kun je via INDF de byte op dat adres uitlezen. Ik weet echt niet of je INDF ook voor print op kan geven. Voor enkele bytes moet het in ieder geval kunnen.

De oplossing van Frits Kieftenbelt werkt prachtig en in weinig code regels. Dus mijn probleem is opgelost, hartelijk dank iedereen!!!!!

Maar waarom zou je die gegevens in je RAM willen hebben? dat kan toch ook makkelijk EEPROM of op je programma space?

@elmowww: Dat is inderdaad de volgende stap. Maar ik weet zeker dat ik deze situatie nog wel een aantal x zal meemaken.

Volgens mij neemt de oplossing van Frits wel idioot veel coderuimte in (ik heb net een 3 channel software PWM programma gemaakt.. als je daar ergens niet zuinig bent gaat het knipperen of gaat 1 uitgang harder dan de andere). Maar als je daar niet mee zit kan dat best.