User Tools

Site Tools


opening_20a_20file_20by_20dropping_20or_20right-clicking

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

opening_20a_20file_20by_20dropping_20or_20right-clicking [2018/03/31 13:19]
127.0.0.1 external edit
opening_20a_20file_20by_20dropping_20or_20right-clicking [2018/04/17 18:02] (current)
tbest3112 Added syntax highlighting
Line 8: Line 8:
   * **Double-click** on the file's icon (it will be opened by the default viewer for that file type).   * **Double-click** on the file's icon (it will be opened by the default viewer for that file type).
 \\  You may want your own BBC BASIC program to be able to open a file in one of these ways. That is easily achieved because in each case what happens is that the selected application is executed with the //path and name to the selected file// in the command line. So all you need to do in your program is extract the contents of the **@cmd$** system variable and use that as the path/name of the file to be opened.\\ \\  There is just one minor complication. If the path or name of the file contains spaces, Windows encloses the entire **@cmd$** string in quotation marks ("). Your program must remove those before the the path/​filename is suitable for use.\\ \\  Here is a very simple program which displays a BMP file:\\ \\  \\  You may want your own BBC BASIC program to be able to open a file in one of these ways. That is easily achieved because in each case what happens is that the selected application is executed with the //path and name to the selected file// in the command line. So all you need to do in your program is extract the contents of the **@cmd$** system variable and use that as the path/name of the file to be opened.\\ \\  There is just one minor complication. If the path or name of the file contains spaces, Windows encloses the entire **@cmd$** string in quotation marks ("). Your program must remove those before the the path/​filename is suitable for use.\\ \\  Here is a very simple program which displays a BMP file:\\ \\ 
 +<code bb4w>
         bmpfile$ = @cmd$         bmpfile$ = @cmd$
         IF ASC(bmpfile$)=34 bmpfile$=EVAL(bmpfile$)         IF ASC(bmpfile$)=34 bmpfile$=EVAL(bmpfile$)
         OSCLI "​DISPLAY """​+bmpfile$+""""​         OSCLI "​DISPLAY """​+bmpfile$+""""​
 +</​code>​
 The first line copies the contents of **@cmd$** (since you must not attempt to modify the contents of that variable). The second line examines the path/​filename and if it is enclosed in quotation marks they are stripped off. The third line displays the image; note the addition of quotation marks. It may seem strange to strip off the quotes and then put them back again, but that ensures that the contents of **bmpfile$** are in a suitable form whenever a valid path/​filename is needed (for example in an **OPENIN** function).\\ \\  Of course this only works when you have '​compiled'​ your program to a standalone executable, since only then can your program be executed by Windows in this way. When testing your program in the Interactive Development Environment **@cmd$** will contain an empty string. You may therefore wish to add to your program so that in these circumstances it requests the filename, for example:\\ \\  The first line copies the contents of **@cmd$** (since you must not attempt to modify the contents of that variable). The second line examines the path/​filename and if it is enclosed in quotation marks they are stripped off. The third line displays the image; note the addition of quotation marks. It may seem strange to strip off the quotes and then put them back again, but that ensures that the contents of **bmpfile$** are in a suitable form whenever a valid path/​filename is needed (for example in an **OPENIN** function).\\ \\  Of course this only works when you have '​compiled'​ your program to a standalone executable, since only then can your program be executed by Windows in this way. When testing your program in the Interactive Development Environment **@cmd$** will contain an empty string. You may therefore wish to add to your program so that in these circumstances it requests the filename, for example:\\ \\ 
 +<code bb4w>
         bmpfile$ = @cmd$         bmpfile$ = @cmd$
         IF ASC(bmpfile$)=34 bmpfile$=EVAL(bmpfile$)         IF ASC(bmpfile$)=34 bmpfile$=EVAL(bmpfile$)
         IF bmpfile$ = ""​ THEN bmpfile$ = FNrequestfile         IF bmpfile$ = ""​ THEN bmpfile$ = FNrequestfile
         OSCLI "​DISPLAY """​+bmpfile$+""""​         OSCLI "​DISPLAY """​+bmpfile$+""""​
 +</​code>​
 Here **FNrequestfile** is assumed to prompt the user to enter (or select) a filename, perhaps by means of an [[http://​www.bbcbasic.co.uk/​bbcwin/​manual/​bbcwin5.html#​input|INPUT]] statement or by using the Windows [[http://​www.bbcbasic.co.uk/​bbcwin/​manual/​bbcwine.html#​opensave|GetOpenFileName]] dialogue.\\ \\  To add your compiled application to the **Send To** list you need to place a shortcut there as follows:​\\ ​ Here **FNrequestfile** is assumed to prompt the user to enter (or select) a filename, perhaps by means of an [[http://​www.bbcbasic.co.uk/​bbcwin/​manual/​bbcwin5.html#​input|INPUT]] statement or by using the Windows [[http://​www.bbcbasic.co.uk/​bbcwin/​manual/​bbcwine.html#​opensave|GetOpenFileName]] dialogue.\\ \\  To add your compiled application to the **Send To** list you need to place a shortcut there as follows:​\\ ​
  
opening_20a_20file_20by_20dropping_20or_20right-clicking.txt ยท Last modified: 2018/04/17 18:02 by tbest3112