;| ______________________________________________________________________ | | | - Filtern der Systemvariablen | |______________________________________________________________________| | | | Aufrufe: siehe unten | | | | Beschreibung: Funktionen zum Filtern der Systemvariablen | | nach Eigenschaften. Funktioniert nur in Verbindung mit | | SYSVDLG.ARX +.DAT aus den Expresstools | | | | Hinweis: Die SYSVDLG.DAT wurde folgendermaßen interpretiert: | | # = READONLY | | ! = READ/WRITE | | | | - Wolfgang Sünder | | - Version 1.0 | | - 4. Mai 2009 | |______________________________________________________________________| |; ;| ______________________________________________________________________ | | | - Hilfsfunktionen | |______________________________________________________________________| |; ;| ______________________________________________________________________ | | | - Destruktive Form von append, Erstatz (setq sym (append sym list))| |______________________________________________________________________| |; (defun append!(symbol1 liste2 / ) (set symbol1(append(eval symbol1)liste2)) ) ;| ______________________________________________________________________ | | | - zerlegt String am angegebenen Zeichen | |______________________________________________________________________| |; (defun str-tok(str c / tmp) (if(/= str "") (progn (setq tmp(str-div str c)) (append(list(car tmp))(str-tok(cadr tmp)c)) ) ) ) ;| ______________________________________________________________________ | | | - zerteilt STR beim ersten Fund von C (einzelnes Zeichen) | |______________________________________________________________________| |; (defun str-div(str c / i l ) (setq i 1) (setq l(strlen str)) (while(and(<= i l)(/=(substr str i 1)c)) (setq i(1+ i)) ) (list(substr str 1(1- i))(substr str(1+ i))) ) ;| ______________________________________________________________________ | | | - Die SYSVDLG.BAT auslesen (ohne Beschreibung) | |______________________________________________________________________| |; (defun read-vardata (/ FILE textline) (setq FILE (open (findfile "sysvdlg.dat") "r")) (while (setq textline (READ-LINE FILE)) (if (member (substr textline 1 1) '("!" "#")) (append! '*SW#DAT-LIST* (list (append (str-tok (substr textline 2) "|") (list(substr textline 1 1))) )) ) ) *SW#DAT-LIST* ) ;| ______________________________________________________________________ | | | - Eine Filterbedingung auf die SYSVAR-Liste anwenden | |______________________________________________________________________| |; (defun filter-list (condition /) (vl-remove-if 'not (mapcar '(lambda (VARDATA /) (if (apply condition (list VARDATA)) VARDATA ) ) (if (not *SW#DAT-LIST*) (read-vardata) *SW#DAT-LIST* ) ) ) ) ;| ______________________________________________________________________ | | | - Befehle mit vorgefertigten Filtern | |______________________________________________________________________| |; ;| ______________________________________________________________________ | | | - Sysvars filtern nach Typ: Integer (list-sysvar-int) | |______________________________________________________________________| |; (defun list-sysvar-int (/) (filter-list '(lambda (testme) (= "INTEGER" (strcase (cadr testme))))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern nach Typ: String (list-sysvar-str) | |______________________________________________________________________| |; (defun list-sysvar-str (/) (filter-list '(lambda (testme) (= "STRING" (strcase (cadr testme))))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern nach Speichern: alle nicht gespeicherten | | - (list-sysvar-notsaved) | |______________________________________________________________________| |; (defun list-sysvar-notsaved (/) (filter-list '(lambda (testme) (= "NOT SAVED" (strcase (caddr testme))))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern nach Speichern: alle gespeicherten | | - (list-sysvar-saved) | |______________________________________________________________________| |; (defun list-sysvar-saved (/) (filter-list '(lambda (testme) (/= "NOT SAVED" (strcase (caddr testme))))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern nach Speicherort: Registry | | - (list-sysvar-registry) | |______________________________________________________________________| |; (defun list-sysvar-registry (/) (filter-list '(lambda (testme) (= "REGISTRY" (strcase (caddr testme))))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern nach Speicherort: Drawing (list-sysvar-drawing) | |______________________________________________________________________| |; (defun list-sysvar-drawing (/) (filter-list '(lambda (testme) (= "DRAWING" (strcase (caddr testme))))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern READ-ONLY (list-sysvar-readonly) | |______________________________________________________________________| |; (defun list-sysvar-readonly (/) (filter-list '(lambda (testme) (= "#" (last testme)))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern VERÄNDERBAR (list-sysvar-readwrite) | |______________________________________________________________________| |; (defun list-sysvar-readwrite (/) (filter-list '(lambda (testme) (/= "#" (last testme)))) ) ;| ______________________________________________________________________ | | | - Sysvars filtern : ALLE (list-sysvar-all) | |______________________________________________________________________| |; (defun list-sysvar-all (/) (filter-list '(lambda (testme) testme)) )