AfraLisp Blog

The AutoLisp/Visual Lisp/VBA Resource Website

AfraLisp Blog

Home Newsletter Utter Rubbish Coding Tips AutoCAD Tips Contact Downloads WAUN

Application Data.

Have you ever looked at the ACAD14.CFG file? (Autocad Configuration File)
This is simply a text file divided into sections.
The only section that you have control over is the [AppData] section.
Let's do something with it.

Say you wanted to store 2 bits of information that you use in one of your
AutoLisp routines. You would store them like this :

(setcfg "appdata/test/bolt" "M24")
(setcfg "appdata/test/length "90")

After (setcfg must come "appdata" followed by your application name,
which must be unique. Following this is the variable tag and then the
information you wish to store. If you open the ACAD14.CFG file, this is
what the [AppData] section will look like :

[AppData/test]
bolt=4
length=90

To retrieve this data you would use the following syntax :

(setq a (getcfg "appdata/test/bolt"))
(setq b (getcfg "appdata/test/length"))

This would set a to "M24" and b to "90".
Now this is great, I hear you say, but were would you use it.
Here's a good example for you :

Say you've written a routine that you would like other people to use on a trial basis, say 5 times. After the 5 times they either pay up, or the routine ceases to work.

What we are going to do is first write a simple routine.
Then we will write a sub-routine that stores the number of times the routine is run in the [AppData] section. Next, we will check the number of times it has been run and then decide whether the limit has expired or not. Have a look :

;Main function

(defun c:test8 ()
	(register)
	(if flagset
		(alert "\nThe programme will now run.")
        );if
   (princ)
)defun

;Sub-function

(defun register ()
	(setq v1 (getcfg "AppData/CadKen/test"))
           (if (= v1 nil)
             (progn
                 (setcfg "AppData/CadKen/test" "1")
                 (setq v1 (getcfg "AppData/CadKen/test"))
             );progn 
           );if
        (setq v2 5)
        (setq v1 (atoi v1))
           (if (< v1 v2)
             (progn
                (setq v1 (+ v1 1))
        	  (cond
         		((= v1 1)  (setcfg "AppData/CadKen/test" "1"))
	 		((= v1 2)  (setcfg "AppData/CadKen/test" "2"))
	 		((= v1 3)  (setcfg "AppData/CadKen/test" "3"))
	 		((= v1 4)  (setcfg "AppData/CadKen/test" "4"))
	 		((= v1 5)  (setcfg "AppData/CadKen/test" "5"))
       		  );cond
       		  (setq v3 v1)
       		  (setq v3 (rtos (- v2 v1)))
       		  (alert (strcat "\n You Have " v3 " more Loadings Left"))
		  (setq flagset T)  
     	    );progn
	    (progn
       		(alert "\nEvalution Period has Expired
	       		\n   Contact Kenny Ramage
	       		\n      ndbe51d1@db.za
	       		\n     For Licensed Copy")
		(setq flagset nil)
	    );progn
     	);if
    (princ)    
);defun
(princ)  

This is a very simple but usefull routine that demonstrates the use of [AppData]. You would still, of course, have to encrypt or compile your routine to stop the user simply changing the variable that contains the usage control number. If you would like the source code, I have included it here.

 
The AutoLisp/Visual Lisp/VBA Resource Website

Copyright 1999-Perpetuity by AfraLisp

All rights reserved.
Information in this document is subject to change without notice.
Site created and maintained by Kenny Ramage

The AutoLisp/Visual Lisp/VBA Resource Website