Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Layer aufruf aus DCL

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Layer aufruf aus DCL (3282 mal gelesen)
Waldemar
Mitglied
Applikationsingenieur


Sehen Sie sich das Profil von Waldemar an!   Senden Sie eine Private Message an Waldemar  Schreiben Sie einen Gästebucheintrag für Waldemar

Beiträge: 264
Registriert: 06.09.2001

erstellt am: 29. Jul. 2003 16:15    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

ich möchte aus einer DCL Box den Befehl LAYER (Dialogbox) aufrufen.
Habe wie folgt angefangen:
        :button {
          label = "&Layer umschalten" ;
          key = "LAS" ;
        }//button
In der LSP datei komme ich aber nicht weiter.
Geht das überhaupt was ich vor habe? Kann mir bitte jemand helfen.

Gruß
Waldemar

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Helmut F
Mitglied
Dipl.-Ing


Sehen Sie sich das Profil von Helmut F an!   Senden Sie eine Private Message an Helmut F  Schreiben Sie einen Gästebucheintrag für Helmut F

Beiträge: 38
Registriert: 09.05.2003

erstellt am: 29. Jul. 2003 16:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Waldemar 10 Unities + Antwort hilfreich

Hallo Waldemar,

arbeite mal folgende Zeilen in deine Routine ein :

  (setq Rueckgabe 2)
  (While (> Rueckgabe 1)
;  ...
;  Dein Dialogaufruf
;  ...
    (action_tile "LAS" "(done_dialog 2)")
    (action_tile "accept" "(done_dialog 1)"); 1 = OK  0 = cancel
    (setq Rueckgabe (start_dialog))
    (if (= Rueckgabe 2)
      (command "LAYER"))
  ) ; while
  (unload_dialog dcl_id)

Ich mache ähnliches und es klappt prima.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 29. Jul. 2003 17:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Waldemar 10 Unities + Antwort hilfreich

Hallo Waldemar,

so wie es Helmut beschrieben hat, sollte es gehen. Ich halte eine derartige Vorgehensweise jedoch nicht für so gut.
Ich trenne in den Funktionen generell die Benutzereingaben von der eigentlichen 'Arbeitsfunktion'. Somit hat man sehr leicht die Möglichkeit aus einem Tool mit Dialogfenster eines zu basteln, welches nur in der Befehlszeile arbeitet. Außerdem ist es in vielen Fällen so, dass die Dialogfenster vom Aufbau her gleich sind, nur eben die Bezeichner der Felder, oder die Listen mit anderen Werten gefüllt werden. Durch die Trennung, kann somit die Eingabefunktion des Dialogfensters mit Dialogfenster auch für andere Tools genommen werden.
Deshalb: Alle Eingaben machen lassen, mit dem Betätigendes OK-Buttun's die Eingaben auf Richtigkeit prüfen. Sind die ok, dann die Daten an die aufrufende Funktion zurück geben.
Ich speichere die Eingabedaten der Dialogfenstern auch immer in Assoziationslisten ("KEY" . WERT). Das bringt den vorteil, dass man direkt die eingegebenen Werte mit (cdr (assoc "KEY" LISTE)) ansprechen kann. Zum anderen kann man, sofern das Dialogfenster ein weiteres mal mit aufgerufen wird, und die alten Eingaben wieder eingetragen werden müssen mit einer einfachen
(mapcar '(lambda (DIA)
(set_tile (car DIA)(cdr DIA))
)
LISTE
)
Anweisung das Diafenster wieder füllen. (Bei Listen sieht's etwas anders aus)

Lass es dir durch den Kopf gehen. Auch wenn es am Anfang etwas mehr Aufwand bedeutet - es zahlt sich am Ende aus.

Bei Fragen ...

Grüße Holger

------------------
Holger Brischke
CADlon - Lisp over night!
Irgendwann muß man schlafen, deshalb:
+!+!+Urlaub vom 01.08.-30.08.2003+!+!+

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Theodor Schoenwald
Ehrenmitglied



Sehen Sie sich das Profil von Theodor Schoenwald an!   Senden Sie eine Private Message an Theodor Schoenwald  Schreiben Sie einen Gästebucheintrag für Theodor Schoenwald

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 29. Jul. 2003 18:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Waldemar 10 Unities + Antwort hilfreich

Hallo Holger,

wenn du zu deiner Beschreibung noch ein Beispiel listen würdest, wäre es für mich anschaulicher.

Ich bedanke mich, Gruß
Theodor Schönwald

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Waldemar
Mitglied
Applikationsingenieur


Sehen Sie sich das Profil von Waldemar an!   Senden Sie eine Private Message an Waldemar  Schreiben Sie einen Gästebucheintrag für Waldemar

Beiträge: 264
Registriert: 06.09.2001

Windows 7, Intel Core 2 Duo, P8600
AutoCAD, AutoCAD MEP, Revit MEP
Navisworks

erstellt am: 30. Jul. 2003 09:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Einen schönen Guten Morgen,

vielen Dank an euch alle für die schnelle Antworten bzw. Lösungsvorschläge. Ich werde versuchen daraus was zu erstellen.

Dein Beitrag Holger ist sehr ausführlich und ich würde dein Konzept gerne übernehmen.
Allerdings (ähnlich wie Theodor) auch nachdem ich es mehrmals durchgelesen habe, komme ich damit nicht klar. Ich verstehe dein Konzept leider nicht. Einerseits schreibst du über die Zusammenführung des Tool mit dem Dialogfenster, anderseits über die Trennung der Eingabefunktionen usw.

Meine Überlegung beim Erstellen des Programm sieht wie folgt aus:
In der Dialogbox gibt der Benutzer die erforderlichen Werte ein. Da ich nicht weis auf welchem Layer das Objekt erstellt werden soll, ermögliche ich dem Benutzer mit dem Button aus der Dialogbox die Auswahl entspr. Layer auszuwählen.

Vielleicht könntest du uns mit einem konkretem Beispiel etwas weiterhelfen


Schöne Grüße
Waldemar

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 30. Jul. 2003 13:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Waldemar 10 Unities + Antwort hilfreich

Hallo Waldemar, Hallo Theodor,

hier nun mal ein schnell zusammen geschossenes Beispiel
Ich habe ein Dialogfenster, eine Lisp. In der Lisp sind insgesamt 4 Funktionen definiert.
Rechteck zeichnen und 2 Zahlen multiplizieren, jeweils 1x mit und 1x ohne Dialogfenster.

Bei Fragen ...

Grüße Holger

Code:

;;;Hauptprogramm - Multiplikation mit DIA
(defun c:mal (/)
  (main_sub 'multipliziere "Multiplikation" "Faktor 1" "Faktor 2")
  (princ)
  )
;;;Hauptprogramm - Multiplikation ohne DIA
(defun c:-mal (/)
  (main-sub 'multipliziere "Faktor 1" "Faktor 2")
  (princ)
  )
;;;Hauptprogramm - Rechteck mit DIA
(defun c:re (/)
  (main_sub 'draw_rechteck "Rechteck" "Breite" "Höhe")
  (princ)
  )
;;;Hauptprogramm - Rechteck ohne DIA
(defun c:-re (/)
  (main-sub 'draw_rechteck "Breite" "Höhe")
  (princ)
  )
;;;SUB mit DIA
(defun main_sub (tool Bezeichner bez_1 bez_2 / daten bez_1 bez_2)
  (setq daten (list
                (cons "WERT1" 1.5)
                (cons "WERT2" 1)
                )
        daten(diafenster Bezeichner bez_1 bez_2 daten))
  (if daten (mapcar tool (list (mapcar 'atof(mapcar 'cdr daten)))))
  (initget "J N")
  (while (or (= "J" (setq tmp(getkword "\nNochmal? Ja/Nein <J>")))
             (not tmp)
             )
    (setq daten(diafenster Bezeichner bez_1 bez_2 daten))
    (if daten (mapcar tool (list (mapcar 'atof(mapcar 'cdr daten)))))
    (initget "J N")
    )
  )
;;;SUB ohne DIA
(defun main-sub (tool bez_1 bez_2 / w1 w2)
  (initget 3)
  (setq w1 (getreal (strcat bez_1 ": ")))
  (initget 3)
  (setq w2 (getreal (strcat bez_2 ": ")))
  (mapcar tool (list(list w1 w2)))
  (princ)
  )
;;;Arbeitsfunktion MULTIPLIKATION
(defun multipliziere (werte /)
  (princ "\n= ")
  (princ (apply '* werte))
  )
;;;Arbeitsfunktion RECHTECK
(defun draw_rechteck (masze / br ho)
  (setq br (car masze)
        ho (cadr masze)
        )
  (princ "\nJetzt würde ein Rechteck gezeichnet werden - ")
  (princ br)
  (princ "breit, und ")
  (princ ho)
  (princ "hoch")
  )
;;;SUB-Dialogfenster
(defun diafenster (ueb bez1 bez2 wertliste / dcl_id erg)
  (setq dcl_id (load_dialog "Beispiel.dcl"))
  (if (not (new_dialog "BSP" dcl_id))
    (exit)
    )
  (set_tile "TXT" ueb)
  (set_tile "BEZ1" bez1)
  (set_tile "BEZ2" bez2)
  (mapcar '(lambda (WW)
             (set_tile (car WW)(f:machstr (cdr WW)))
             )
          wertliste
          )
  (action_tile "accept" "(if (setq erg(dia:ok wertliste))(done_dialog 1)(alert \"Falsche oder fehlende Eingabe\"))")
  (action_tile "cancel" "")
  (setq ns (start_dialog))
  (unload_dialog dcl_id)
  erg
  )
;;;DIA-SUB
(defun dia:ok ( tiles / tmp)
  (if (not (member nil
                   (setq tmp
                          (mapcar '(lambda (TI / tmp)
                                     (if (AND
                                           (/= (setq tmp (get_tile TI)) "")
                                           (> (atof tmp) 0.0)
                                           )
                                       (cons TI tmp)
                                       )
                                     )
                                  (mapcar 'car tiles)
                                  )
                         )
                   )
           )
    tmp
    )
  )
;;;SUB-Typentest
(defun f:machstr (wert / tp)
  (setq tp (type wert))
  (cond
    ((= 'REAL tp)
     (rtos wert 2 2)
     )
    ((= 'INT tp)
     (itoa wert)
     )
    ((= 'STR tp)
     wert
     )
    )
  )


und hier noch die dcl-Datei
Code:

BSP : dialog {
  label = "Eingabe";
  : text {
    key = "TXT";
    }
  : row {
    : column {
      : text {
        key = "BEZ1";
        value = "Hier kommt dann der Text hin";
        }
      : text {
        key = "BEZ2";
        value = "Hier kommt dann der Text hin";
        }
      }
      : column {
        : edit_box {
          width = 8;
          key = "WERT1";
          }
        : edit_box {
          width = 8;
          key = "WERT2";
          }
        }
      }
    ok_cancel;
  }

------------------
Holger Brischke
CADlon - Lisp over night!
Irgendwann muß man schlafen, deshalb:
+!+!+Urlaub vom 01.08.-30.08.2003+!+!+

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dabrunz
Mitglied



Sehen Sie sich das Profil von Dabrunz an!   Senden Sie eine Private Message an Dabrunz  Schreiben Sie einen Gästebucheintrag für Dabrunz

Beiträge: 127
Registriert: 28.05.2003

erstellt am: 30. Jul. 2003 16:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Waldemar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Brischke:

[..] Ich halte eine derartige Vorgehensweise jedoch nicht für so gut.

Ich auch nicht.

Zitat:

[..] Lass es dir durch den Kopf gehen. Auch wenn es am Anfang etwas mehr Aufwand bedeutet - es zahlt sich am Ende aus.

Das kann ich nur unterstützen. Ich versuche innerhalb meiner Programme die Dialogsteuerung um 4 Variablen herum zu stricken:

ValueList - Assoziations-Liste zum Vorhalten aller Dialog-relevanten Werte
RescueList - Assoziations-Liste zum Vorhalten aller relevanten DialogBox-Inhalte
ModeList - Assoziations-Liste zum Vorhalten aller relevanten "mode_tile"s
ComponentList - Assoziations-Liste zum Vorhalten aller DCL-Keys

In allen Fällen gibt's da noch meiner Faulheit zu verdankende Hilfsfunktionen, die jeweils Werte aus diesen Variablen heraus bzw. in diese Variablen hinein stecken. Die sehen dann so aus:

(:RList->"eb_x") - holt den der DCL-Komponente "eb_x" zugeordneten Wert
(:->RList"eb_x" "1.0") - setzt eben diesen Wert auf "1.0"

Analog funktionieren :->VList, :VList->, :->MList und  :MList->.

ComponentList ist hier nur eine Liste, in der Informationen für :dcl-leaveDialog (zumindest in diesem Fall hier) vorgehalten werden. Hier werden also nur alle Dialog-Comonenten-Keys gespeichert.

Ein kleines Beispiel kann vielleicht die Idee illustrieren: (Allerdings hab' ich gemerkt, dass es gar nicht klein bleiben kann, so sehr ich mich auch bemühe. Da fehlen jetzt sicher ein paar Funktions-Definitionen, aber die meisten wurden hier schon so oder so ähnlich erklärt)

Code:

(defun fuehre_dd_punktAuswahl (#dclID ValueList RescueList ModeList
                              / ComponentList
                                dclStatus
                                ;****  lokal deklarierte Funktionen    ****
                                buildPunkt!
                              )
  ;****  lokal deklarierte Funktionen    ****
  (defun buildPunkt! ( / );** das lässt sich besser in einem Bibliotheks-Gesamt-Konzept unterbringen
                          ;** aber hier will ich mal nicht all zu sehr übertreiben
    (:->VList'Punkt
      (mapcar'atof
        (mapcar':RList->'("eb_x""eb_y""eb_z"))
      )
    )
  ); end DEFUN <buildPunkt!>
  ;****  lokal deklarierte Funktionen    ****

  ;**** Initialisierung ****
  (setq dclStatus'auf-gehts)
  (:dclInitVal-get_point)
  ;**** Initialisierung ****

  ;**** Dialog-Loop    ****
  (while dclStatus
    ;**** Dialog initialisieren ...    ****
    (:dcl-newDialog "punktauswahl" #dclID)
    (:dclInit-get_point (:VList->'Punkt))
    (action_tile "accept" "(:dcl-leaveDialog 1)")
    (action_tile "cancel" "(:dcl-leaveDialog 0)")
    (:apply-map'set_tile RescueList)
    (:apply-map'mode_tile ModeList)

    ;****      ... und starten          ****
    (setq dclStatus (start_dialog))
    (cond
    ((= 8 dclStatus);** by <get_point>
      ;**** darf ruhig verbessert werden - vor allen Dingen fehlt ABBRUCH-Kontrolle ****
      (:dclSet-get_point (getpoint"\nPunkt wählen:"))
    )
    ((= 0 dclStatus);** by <cancel>
      (setq ValueList nil);** dann wird eben nix zurück gegeben
      (setq dclStatus nil)  ;** und noch einen Durchlauf braucht's auch nicht
    )
    ((= 1 dclStatus);** by <accept>
      (buildPunkt!)
      (setq dclStatus nil);** und fertig
    )
    )
  )
  (:return ValueList)
); end DEFUN <fuehre_dd_punktAuswahl>


Ein Aufruf könnte z.B. so aussehen:

Code:

; ...
(setq dialog-ID (:dcl-load "eine-Datei-mit-sowas-wie-unten.DCL"))
; ...
(fuehre_dd_punktAuswahl
  dialog-ID
'((Punkt 1 0 0));** 's ist nur ein Beispiel
  nil
  nil
)
; ...
(unload_dcl dialog-ID)

Ich denke mal, das schießt u.U. ordendlich über's Ziel hinaus, zeigt aber, was eigendlich da sein muss, um anschließend flott DCL-Dialoge programmieren zu können - finde ich zumindest. Vor allen Dinge habe ich gemerkt, dass es gar nicht so einfach ist, ein Beispiel für ein solches Konzept in aller Kürze aufzuschreiben - insbesondere, wenn all der Bibliotheks-Teil auch noch aufgeführt werden muss. Einen Teil davon will ich hier noch als eine Art PS anhängen. Wichtig ist aber, dass gerde der Abschnitt oberhalb zeigt, wie glatt - und vor allen Dingen knapp - alles mit der nötigen Vorarbeit laufen kann.

Achim Dabrunz


.. und hier noch die Mini-DCL-Datei:

Code:

//
//      SEGMENT : get_point
//
get_point :column {
  key  = "seg_get_point";
  label = " Einfügepunkt ";
  fixed_height = true;
  :button{label = "&Punkt wählen <"; key = "b_getpoint";}
  :edit_box{label = "&X:"; key = "eb_x"; edit_width = 10;}
  :edit_box{label = "&Y:"; key = "eb_y"; edit_width = 10;}
  :edit_box{label = "&Z:"; key = "eb_z"; edit_width = 10;}
  spacer_1;
}// end SEGMENT <get_point>

punktauswahl: dialog{
  label = "kleine Demo";
  :column{
    get_point;
    ok_cancel;
    errtile;
  }
}


.. und eine Hand voll Bibliotheks-Funktionen - da fehlen sicher noch einige, aber die sind flott selbst definiert oder müssen halt nochmal erfragt werden ..

Code:

;
;***************************************************
;****  Funktionen für die Dialog-Steuerung    ****
;***************************************************
;
(defun :dclInit-get_point (#pnt / )
  (action_tile "b_getpoint" "(:dcl-leaveDialog 8)")
  (action_tile "eb_x"      "(:dcl-Real?! $key $value'ueberschreiben)")
  (action_tile "eb_y"      "(:dcl-Real?! $key $value'ueberschreiben)")
  (action_tile "eb_z"      "(:dcl-Real?! $key $value'ueberschreiben)")
  (:dclSet-get_point #pnt)
); end DEFUN <:dclInit-get_point>

(defun :dclInitVal-get_point ( / )
  (:l-union!'ComponentList'("eb_x""eb_y""eb_z"))
); end DEFUN <:dclInitVal-get_point>

(defun :dclSet-get_point (#pnt / )
  (mapcar':->RList
  '("eb_x""eb_y""eb_z")
    (mapcar':str-or-empty #pnt)
  )
); end DEFUN <:dclSet-get_point>
;
;***********************************************************************************
;****  (:dcl-Real?! <DCL-Key> <Wert> <FLAG-überschreiben?> )                    ****
;***********************************************************************************
;
(defun :dcl-Real?! (#key #value #overwriteOnError? / real-number)
  (setq real-number (distof(vl-string-subst"."","(:?'#value'(get_tile #key)))))
  (if real-number
    (progn
      (:dcl-error-clear)
      (set_tile #key (rtos real-number 2 4))
      (:->RList #key (get_tile #key))
      (distof(:RList-> #key))
    )
    (progn
      (:dcl-error"Ungültiger Wert : Zahl erwartet")
      (if #overwriteOnError? (set_tile #key (:?'(:RList-> #key)"<ungültig>")))
      (:dcl-SelectEB #key)
      (:return nil)
    )
  )
); end DEFUN <:dcl-Real?!>
;
;***************************************************
;****  (:dcl-leaveDialog <done_dialog-No> )    ****
;****  überschreibt <RescueList>              ****
;***************************************************
;
(defun :dcl-leaveDialog (#done / )
  (setq RescueList
    (:merge-AssL RescueList
                (mapcar
                  '(lambda(x) (cons x (get_tile x)))
                  ComponentList
                )
    )
  )
  (if #done (done_dialog #done))
); end DEFUN <:dcl-leaveDialog>
;
;***************************************************
;****  (:dcl-error-clear)                      ****
;***************************************************
;
(defun :dcl-error-clear ()
  (set_tile "error" "")
)
;
;***************************************************
;****  (:dcl-error <Error-Meldung> )            ****
;***************************************************
;
(defun :dcl-error (#msg)
  (set_tile "error"#msg)
)
;
;***************************************************
;****  (:dcl-SelectEB <:dcl-Key> )              ****
;***************************************************
;
(defun :dcl-SelectEB (#key / )
  (mode_tile #key 2)
  (mode_tile #key 3)
); end DEFUN <:dcl-SelectEB>

;****  und noch 1-2 andere                    ****

;
;***************************************************
;****  (:str-or-empty <Zahl> )                  ****
;***************************************************
;
(defun :str-or-empty (#zahl / )
  (cond
    ((numberp #zahl)(rtos #zahl 2 4))
    ((:str? #zahl)  #zahl)
    ('else "")
  )
); end DEFUN <:str-or-empty>


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz