Diferenta intre set si setq in Autolisp

Creat de DanCad, Feb 22, 2011, 04:16 PM

« precedentul - următorul »

DanCad

Stie cineva care este diferenta intre setq si set in Autolisp?
Din cate am studiat eu setq se foloseste pentru a atribuii o valore unei variabile, iar set se foloseste in general pentru a atribui valori variabilelor dinamice, cand nu se cunosate numarul de variabile ca in exemplele de mai jos:

..............................
(setq j 1)
   (while (set (read (strcat "point_" (itoa j)))
      (getpoint "\nPoint : ";)
      )
      (setq j (1+ j))
   )
.............................
Legat de aceste exemple doresc sa clarific daca mai sunt si alte diferente, alte situatii care pot sa apara in constructia unui program. :)

John Doe

SETQ seteaza valoarea unui simbol pe o expresie, iar SET seteaza valoarea unui nume de simbol pe o expresie; numele simbolului trebuie sa fie precedat de un apostrof deci da, merge la dinamice.
Gasesti mai multe in Helpul de la Visual LISP-ul din AutoCAD 2007. Sau, daca vrei, am o cartea d-ui Stancescu "AutoLISP" scanata, daca vrei ti-o trimit.

DanCad

Multumesc John, pentru raspuns, cat despre carte o am si eu este foarte buna.
As fi interesat cum se face un program trial in autolisp, poate imi dai o idee, din cate am vazut tu esti un programator mai experimentat pe Visual Lisp.

Multumesc anticipat
Dan :)

John Doe

Mersi de laude, nu cred ca sunt eu prea experimentat, sunt doar un tip care stie atâta cât il duce capul. Din greseala, stiam si ce ai intrebat tu.

Programul trial il poti face daca citesti data din calculator:
(setq data (rtos (getvar "cdate" )))

sau, fiindca asta se cam poate fenta, scrii tu un fisier undeva intr-o locatie stiuta numai de tine, in C:\Windows sau C:\Program Files (ca si-asa nici Bill Gates nu stie sigur ce trebuie sa fie pe-acolo sau nu), in care notezi de câte ori a fost folosita aplicatia, si peste un anumit numar de ori sa nu mai functioneze.
Sau scrii in fisierul asta data extrasa la prima rulare si data curenta, si la fiecare rulare pui conditia ca data curenta sa fie egala sau mai mare cu cea de la prima pornire, si daca diferenta e mai mare de 30 de zile nu mai merge. Daca diferenta de timp intre ultima rulare (scrisa in fisierul asta) si data curenta e negativa, cineva a schimbat data in calculator si tot nu merge.

Si inca ceva: daca nu folosesti deja, ti-as recomanda editorul Notepad++, il gasesti free pe Net si e foarte bun. Daca nu gasesti, ti-l trimit eu.

bogdy

sa ai grija mare cum iti protejezi lispul ca altfel il faci trial degeaba.

John Doe

Cea mai buna metoda de protectie este sa nu-l trebuiasca nimanui.