| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Fehlermeldung (406 mal gelesen)
|
Waldemar Mitglied Applikationsingenieur
Beiträge: 264 Registriert: 06.09.2001 Windows 7, Intel Core 2 Duo, P8600 AutoCAD, AutoCAD MEP, Revit MEP Navisworks
|
erstellt am: 04. Jun. 2003 11:07 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, habe nachfolgenden Bereich in einem Lispprogramm vor einigen Jahren geschrieben (noch unter R14). (Defun DKL () (Setq KL (Getstring (Strcat "\nKanallänge <"VKL">: "))) (If (/= KL "") (Setq VKL KL)) (Setq KL VKL) (Setq KL (Atof KL)) (If (<= KL 0) (And (Princ "\nWert muss positiv und ungleich Null sein.") (DKL)) );If ) Seitdem habe ich mich mit Lisp nicht beschäftigt. Unter R2000 bekomme ich nachfolgende Fehlermeldung: ; Fehler: Fehlerhafter Argumenttyp: stringp nil Offensichtlich liegt es an der Zeile mit Getstring und Strcat. Wo ist hier der Fehler begraben. Kann mir jem helfen. Schöne Grüße Waldemar
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axeld Mitglied Projektingenieur/CAD-Administrator
Beiträge: 267 Registriert: 18.11.2002
|
erstellt am: 04. Jun. 2003 12:10 <-- editieren / zitieren --> Unities abgeben: Nur für Waldemar
|
Waldemar Mitglied Applikationsingenieur
Beiträge: 264 Registriert: 06.09.2001 Windows 7, Intel Core 2 Duo, P8600 AutoCAD, AutoCAD MEP, Revit MEP Navisworks
|
erstellt am: 04. Jun. 2003 12:22 <-- editieren / zitieren --> Unities abgeben:
|
| Konstrukteur (m/w/d) | Die De Dietrich Process Systems Gruppe entwickelt, fertigt und vermarktet als globaler Marktführer innovative und kundenorientierte Lösungen auf Basis von Apparaturen mit Stahl/Email-, Edelstahl-, Speziallegierungs- und Borosilikatglas-Technologien für die chemische und pharmazeutische Industrie. Am Standort Mainz bilden über 200 Mitarbeiter das QVF® Kompetenzzentrum für den Glasapparatebau, ... | Anzeige ansehen | Konstruktion, Visualisierung |
|
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 04. Jun. 2003 12:39 <-- editieren / zitieren --> Unities abgeben: Nur für Waldemar
Tag Waldemar. Dein Variable [b]VKL[b] ist nicht als STRING initialisert. Es ist auch nicht klar, wo denn ein Wert herkommen soll - ist ja 'ne globale Variable. Außerdem arbeit die Funktion ohne brauchbare Rückgabe. Meine Empfehlung: Code:
; ;*************************************************************************** ;**** **** ;**** (get-positive-number <prefix> <default> <postfix> ) **** ;**** **** ;**** <prefix> ::= STRING - 1. Teil der User-Anfrage **** ;**** <default> ::= REAL/STRING - positiver Vorgabe-Wert **** ;**** <postfix> ::= STRING - Abschluss der User-Anfrage **** ;**** **** ;**** Rückgabe: REAL - Abstand oder Länge **** ;**** **** ;**** Aufforderung zu Eingabe einer positiven Zahl, auch abgreifbar **** ;**** **** ;*************************************************************************** ;**** **** ;**** BEISPIEL: **** ;**** **** ;**** (:get-positve-number "\nGrabStein-Länge? <" 12.5 "> ") **** ;**** **** ;**** Befehl: **** ;**** GrabStein-Länge? <12.5> <ENTER> **** ;**** -> 12.5 **** ;**** **** ;**** Befehl: **** ;**** GrabStein-Länge? <12.5> 38.45678 <ENTER> **** ;**** -> 38.4568 **** ;**** **** ;*************************************************************************** ; (defun get-positive-number (#msg-prefix #default-value #msg-postfix) ;** no : ZERO, NEGATIVE, 3D (initget (+ 2 4 64)) (cond ((getdist ;** zusammen gesetzte Eingabe-Aufforderung (strcat #msg-prefix (str-or-empty #default-value) (str-or-empty #msg-postfix) ) ) ); end Alternative0: Es wurde eine Brauchbare Zahl eingegeben ;**** ansonsten wird der <#default-value> wieder zurück gegeben, **** ;**** allerdings zuerst definitiv in eine REAL-Zahl gewandelt. **** ((atof(str-or-empty #default-value))) ) ) ; ;*************************************************************************** ;**** (str-or-empty <Zahl> ) **** ;*************************************************************************** ;**** - wandelt Zahl in STRING (m. fester Anz. Nachkommastellen) ODER **** ;**** - gibt einen eigegebenen STRING unverändert zurück ODER **** ;**** - erzeugt den Standard-Wert "" **** ;*************************************************************************** ; (defun str-or-empty (#zahl / ) (cond ((numberp #zahl) (rtos #zahl 2 4)) ((='STR (type #zahl)) #zahl) ('T "") ) ); end DEFUN <str-or-empty>
Ich denke mal, damit kann eine ganz brauchbare Lösung gebaut werden. Achim Dabrunz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |