BBC BASIC for Windows
« Startup »

Welcome Guest. Please Login or Register.
Apr 5th, 2018, 10:58pm



ATTENTION MEMBERS: Conforums will be closing it doors and discontinuing its service on April 15, 2018.
Ad-Free has been deactivated. Outstanding Ad-Free credits will be reimbursed to respective payment methods.

If you require a dump of the post on your message board, please come to the support board and request it.


Thank you Conforums members.

BBC BASIC for Windows Resources
Online BBC BASIC for Windows documentation
BBC BASIC for Windows Beginners' Tutorial
BBC BASIC Home Page
BBC BASIC on Rosetta Code
BBC BASIC discussion group
BBC BASIC for Windows Programmers' Reference

« Previous Topic | Next Topic »
Pages: 1  Notify Send Topic Print
 thread  Author  Topic: Startup  (Read 1480 times)
JB91
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 47
xx Startup
« Thread started on: Jul 24th, 2010, 09:10am »

In my program, I have an options dialog, and when you select an option it stays like that until you change it again. Is there a possible way to keep it changed when you close the program and start it again?

Josh.
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Startup
« Reply #1 on: Jul 24th, 2010, 09:23am »

on Jul 24th, 2010, 09:10am, JB91 wrote:
Is there a possible way to keep it changed when you close the program and start it again?

You would need to save the settings when you exit your program, and load them again when you next run it. You can either save them in the Registry, or an INI file. The INI file method is probably the easiest and safest for a beginner:

http://bb4w.wikispaces.com/Reading+and+writing+.INI+data+files

The Registry method is described in the main Help documentation:

http://www.bbcbasic.co.uk/bbcwin/manual/bbcwine.html#registry

Richard.
User IP Logged

JGHarston
Junior Member
ImageImage


member is offline

Avatar




Homepage PM

Gender: Male
Posts: 52
xx Re: Startup
« Reply #2 on: Aug 21st, 2010, 4:55pm »

on Jul 24th, 2010, 09:23am, Richard Russell wrote:
The Registry method is described in the main Help documentation:
http://www.bbcbasic.co.uk/bbcwin/manual/bbcwine.html#registry

The simple registry library at http://bb4w.wikispaces.com/Simple+Registry+Usage
can make using the registry easier. For your example you might use something like:

Code:
option$=FNReg_Rd(KeyRoot$+"Options")
IF option$="" THEN option$=a default value
REM At this point ask user for (new) options
PROCReg_Wr(KeyRoot$+"Options",option$)
 


Jonathan
User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Startup
« Reply #3 on: Aug 21st, 2010, 5:51pm »

on Aug 21st, 2010, 4:55pm, JGHarston wrote:
The simple registry library at http://bb4w.wikispaces.com/Simple+Registry+Usage
can make using the registry easier.

A question about FNReg_Rd:

Why is Buf% a global variable? Would it not be better for it to be declared LOCAL and renamed, say, B% in keeping with the other integer variables? Unnecessarily declaring a global variable within an FN or PROC is not good practice.

Richard.
« Last Edit: Aug 21st, 2010, 9:01pm by admin » User IP Logged

JB91
New Member
Image


member is offline

Avatar




PM

Gender: Male
Posts: 47
xx Re: Startup
« Reply #4 on: Aug 24th, 2010, 4:49pm »

I made an INI file, and coded my program to get data from it, but for some reason this code doesn't work in my program.

font$ = FNgetinistring(@usr$+"Settings.INI","options","font")
PRINT font$
*FONT font$
PRINT "Hello!"
END
DEF FNgetinistring(file$, section$, key$)
LOCAL buf%
DIM buf% LOCAL 255
SYS "GetPrivateProfileString", section$, key$, "", buf%, 256, file$
= $$buf%

Here is my simple INI file:

[options]
startupmax=NOT MAXIMISE
startupcol=11
startupbackcol=0
font=Times New Roman

Everything else works fine with INI files but when I run this code, it doesn't work.

Josh.

User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Startup
« Reply #5 on: Aug 24th, 2010, 10:11pm »

on Aug 24th, 2010, 4:49pm, JB91 wrote:
I made an INI file, and coded my program to get data from it, but for some reason this code doesn't work in my program.
Code:
*FONT font$ 

You can't use *FONT that way. You must use OSCLI as follows:

Code:
      font$ = FNgetinistring(@usr$+"Settings.INI","options","font")
      PRINT font$
      OSCLI "FONT "+font$
      PRINT "Hello!"
      END 

Also, you haven't specified a size for the font.

Richard.
User IP Logged

JGHarston
Junior Member
ImageImage


member is offline

Avatar




Homepage PM

Gender: Male
Posts: 52
xx Re: Startup
« Reply #6 on: Aug 30th, 2010, 9:32pm »

on Aug 21st, 2010, 5:51pm, Richard Russell wrote:
A question about FNReg_Rd:
Why is Buf% a global variable? Would it not be better for it to be declared LOCAL and renamed, say, B% in keeping with the other integer variables?

I thought it was. My version here says v1.02 13Aug2007 Buf% localised (mdfs.net/blib/Win/Reg.bbc). I must have not correctly updated the wiki article, I'll go back and check.
User IP Logged

JonR
New Member
Image


member is offline

Avatar




PM


Posts: 24
xx Re: Startup
« Reply #7 on: Sep 5th, 2010, 9:05pm »

Why did you not change the code yourself when you spotted the error? A wiki wiki web site is by its nature a collaborative editing tool which all members are generally free to edit. Personally if I find an error in a wiki article I tend to correct it myself rather than contacting the original author who may no longer be interested in the wiki.

« Last Edit: Sep 5th, 2010, 9:15pm by JonR » User IP Logged

admin
Administrator
ImageImageImageImageImage


member is offline

Avatar




PM


Posts: 1145
xx Re: Startup
« Reply #8 on: Sep 5th, 2010, 10:20pm »

on Sep 5th, 2010, 9:05pm, JonR wrote:
Why did you not change the code yourself when you spotted the error?

Quite simple - it didn't look anything like an 'error' to me. The indications were that the buffer pointer Buf% had quite deliberately been made a global: it was omitted from the list of LOCALs, and named according to the preferred convention for global variables (an initial capital and the rest lowercase). By contrast, the LOCAL integer variables were all 'static' - A% to Z%.

So the evidence pointed to it being a deliberate design decision to make the buffer pointer a global. In that case it would have been quite inappropriate to alter the article without first checking with the author.

I do commonly edit other people's Wiki articles to correct errors - when I'm certain it is an error; but I wasn't certain in this case. As it turns out it seems it really was just a mistake (but I still don't understand why the variable is named Buf% rather than B%).

Richard.
« Last Edit: Sep 5th, 2010, 10:21pm by admin » User IP Logged

JGHarston
Junior Member
ImageImage


member is offline

Avatar




Homepage PM

Gender: Male
Posts: 52
xx Re: Startup
« Reply #9 on: Sep 11th, 2010, 10:45am »

on Sep 5th, 2010, 10:20pm, Richard Russell wrote:
(but I still don't understand why the variable is named Buf% rather than B%).

Don't worry, neither do I smiley It's probably the result of putting together the code on two seperate occasions, and cut&pasting working code into the library code rather than retyping it (which probably explains the missing LOCAL).
I may get around to changing it to B%, "Buf%" is not my usual nomenclature style anyway (I would usually use all lower case, or something more name descriptive).
User IP Logged

Pages: 1  Notify Send Topic Print
« Previous Topic | Next Topic »

| |

This forum powered for FREE by Conforums ©
Terms of Service | Privacy Policy | Conforums Support | Parental Controls