Zitat:
Original erstellt von CADmium:
"geprinct" wird es nur einmal. Das andere ist der Rückgabewert der Funktion.kannste abstellen durch ein (princ) als letzte Anweisung:
(defun ........
....
....
(princ)
)
Ich kann mal wieder nicht mitlesen, ohne zu intervenieren. Hier wird schon wieder ein Anfänger auf die 'schiefe Bahn' gebracht und zur kriminellen Programmierung angeleitet!
Autocart, streich einfach beide princs wieder raus - die letzte Zeile der Funktion sieht dann so aus:
Code:
...
(strcat"\nä:"(itoa äs)" ö:"(itoa ös)"ü:"(itoa üs)" ß:"(itoa ßs))
)
Dann macht die Funktion auch genau das, was du im Augenblick willst, nämlich das Ergebnis einmal in die Befehlszeile schreiben. Und so bleibt die Funktion eine Funktion, die eine Rückgabe hat. Mit einem (princ) am Ende wird eine Funktion in ihrer Eigenschaft als Funktion zerstört, sie hat keine Rückgabe mehr.
Das bedeutet: Als Funktion kannst du z.B. die Ergebnisse an eine andere Funktion weitergeben, hier ein Beispiel:
Code:
(defun zaehle-umlaute-in-datei(string01 dateiname / fh)
(if(setq fh(open dateiname "a"))
(progn
(write-line(Umlautß-Pruefung string01)fh)
(close fh)
)
)
)
Jedwede Möglichkeit, die Funktion für so etwas (und anderes) zu nutzen, nimmt man sich, wenn man die Rückgabe kastriert. In diesem Fall würde das Programm mit der kastrierten Version einen Fehler verursachen.
Die goldene Regel ist einfach erklärt: In einer Funktion, die irgendetwas berechnet oder irgendwas in der Geometriedatenbank sucht oder erzeugt oder ändert, gehört niemals ein princ, print o.ä. hinein. Die Ein- und Ausgabefunktionen gehören ausschließlich in Funktionen, die das User Interface darstellen, und das leere (princ) gehört ausschließlich ans Ende eines mit dem Präfix c: definierten neuen AutoCAD-Befehls - die c:-Funktion sollte auch hier das User Interface sein und dann die 'eigentlichen' Funktionen aufrufen.
Gruß, Axel Strube-Zettler
------------------
Meine AutoLisp-Seiten
Meine private Homepage
Mein Angriff auf dein Zwerchfell
Mein Lexikon der Fotografie
Mein gereimtes Gesülze
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP