| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Rückgabe getstring nicht nil? (1955 mal gelesen)
|
rkauskh Ehrenmitglied V.I.P. h.c. Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006
|
erstellt am: 07. Mai. 2009 09:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Ich seh's nicht: Code: (setq suffix (getstring "\nSuffix: ")) (if (/= suffix nil) (setq trenner2 "-"))
Das sollte doch, wenn der User Enter, Leertaste oder RMT drückt, für Suffix nil zurückgeben und somit trenner2 unverändert lassen. trenner2 wird aber immer mit "-" gefüllt. ------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 07. Mai. 2009 09:06 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
hi, du hast wenn suffix ungleich(/=) nil dann trenner "-" also equal oder = ... nil dann trenner "-" mfg heiko Edit mist (setq suffix (getstring "\nSuffix: ")) gibt bei enter llertaste "" zurück... [Diese Nachricht wurde von Dorfy am 07. Mai. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 07. Mai. 2009 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
getstring liefert bei Enter einen Leerstring und nicht nil also so (or(/=(setq suffix (getstring "\nSuffix: "))"") (setq suffix "-") ) Um aber auf das Verhalten mit der nil-Rückgabe zu kommen, kann man z.B. solche Funktion einsetzen:
(defun DT:GETSTRING(MSG) (or(=(type MSG)'STR)(setq MSG"")) (if(and(not(vl-catch-all-error-p (setq RETURN(vl-catch-all-apply 'getstring (list MSG))) ) ) (=(type RETURN)'STR) (/= RETURN "") ) RETURN (prompt "\nAbbruch durch Anwender.") ) ) ist natürlich noch ausbaubar mit MSG-Analyse .. ist in <> ein Vorgabewert mitgegeben , dann setze diesesn usw. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Ehrenmitglied V.I.P. h.c. Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2580 Registriert: 15.11.2006
|
erstellt am: 07. Mai. 2009 09:20 <-- editieren / zitieren --> Unities abgeben:
Danke euch beiden, ich wußte es ist simpel. Herzlichen Dank auch wieder an Autodesk für die Hilfedatei. Zitat: Return Values The string entered by the user; otherwise nil, if the user pressed ENTER without typing a string.
------------------ MfG RK Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 07. Mai. 2009 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
oder (weil man's ja öfter braucht): Code: ... (setq suffix (get-nil-string "\nSuffix: ")) ... (defun get-nil-string (anfrage / return) (if (= (setq return (getstring anfrage)) "") nil return ) )
Grüsse, Henning------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2007,(Mechanical)
|
erstellt am: 17. Jun. 2009 20:23 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Zitat: Original erstellt von CADmium:Um aber auf das Verhalten mit der nil-Rückgabe zu kommen, kann man z.B. solche Funktion einsetzen: (defun DT:GETSTRING(MSG) (or(=(type MSG)'STR)(setq MSG"")) (if(and(not(vl-catch-all-error-p (setq RETURN(vl-catch-all-apply 'getstring (list MSG))) ) ) (=(type RETURN)'STR) (/= RETURN "") ) RETURN (prompt "\nAbbruch durch Anwender.") ) ) ist natürlich noch ausbaubar mit MSG-Analyse .. ist in <> ein Vorgabewert mitgegeben , dann setze diesesn usw.[/B]
Kann man mit dieser Funktion zwischen einem enter und einem leeren String unterscheiden? MFG THE_ONE Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Jun. 2009 20:25 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Zitat: Original erstellt von THE_ONE: Kann man mit dieser Funktion zwischen einem enter und einem leeren String unterscheiden?MFG THE_ONE
Wie gibst du einen Leeren String ein ? Geht's dir um eine getstring-Auswertung, oder was ganz anderes? Um ein Enter zu simulieren oder so kannst du (chr 13) (oder so ?!) verwenden. Man kann mit (initget ..) auch eine Leerstringeingabe verbieten .. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
THE_ONE Mitglied Student, Alter:23
Beiträge: 299 Registriert: 27.04.2005 AMD XP 2000, 512MB-RAM, WIN XP Pro Readon 9600Pro VIZ 2005, Autocad 2007,(Mechanical)
|
erstellt am: 17. Jun. 2009 23:15 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
Also ich will das wenn ich enter drücke das er nil zurück liefert! Und wenn ich "" eingebe soll es eben ein leerer String sein und sonst halt normaler Text. Nur derzeit, da das getstring nicht das macht was es soll, ist ein enter gleich einem leeren String. Und das sollte nicht so sein. Das wäre das gleiche wie wenn ich bei einem getint 0 zurückbekommen würde bei enter. Daher wäre es fein wenn es ein getstring geben würde das einfach genau das macht was es soll. [Diese Nachricht wurde von THE_ONE am 17. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 18. Jun. 2009 00:09 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 18. Jun. 2009 08:09 <-- editieren / zitieren --> Unities abgeben: Nur für rkauskh
und wenn ich dann """ eingebe ? . Irgendwie macht das IMHO keinen Sinn, oder der ONE erklärt mir da mal .. evtl. hilft grread weiter ... hier mal was ganz Frakmentales:
(defun GETSTRINGSPEZIAL( / STRING KEYS) (while (/=(cadr KEYS)13) (while (/=(car(setq KEYS(grread nil (+ 2 4 8) 0)))2)) (cond ((=(cadr KEYS) 8) (setq STRING (cdr STRING)) (princ (strcat "\r" (apply 'strcat (reverse STRING))" ")) ) ;;evtl. andere Sondertasten ect. ('T(setq STRING (cons (chr(cadr KEYS)) STRING))) ) (princ (strcat "\r" (apply 'strcat (reverse STRING)))) ) (apply 'strcat (reverse STRING)) ) ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |