Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Rückgabe getstring nicht nil?

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:  Rückgabe getstring nicht nil? (1941 mal gelesen)
rkauskh
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. (FH) Versorgungstechnik



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

Beiträge: 2166
Registriert: 15.11.2006

erstellt am: 07. Mai. 2009 09:01    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 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


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

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 07. Mai. 2009 09:06    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 rkauskh 10 Unities + Antwort hilfreich

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




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 07. Mai. 2009 09: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 rkauskh 10 Unities + Antwort hilfreich

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



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

Beiträge: 2166
Registriert: 15.11.2006

erstellt am: 07. Mai. 2009 09:20    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

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



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

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 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 rkauskh 10 Unities + Antwort hilfreich

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


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

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 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 rkauskh 10 Unities + Antwort hilfreich

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




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 17. Jun. 2009 20:25    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 rkauskh 10 Unities + Antwort hilfreich

  
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


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

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 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 rkauskh 10 Unities + Antwort hilfreich

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



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

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 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 rkauskh 10 Unities + Antwort hilfreich

dann mach's doch so:
Code:
(defun get-nil-string (anfrage / return)
  (if (= (setq return (getstring anfrage t)) "")
    nil
    (if (= return "\"\"")
      ""
      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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 18. Jun. 2009 08:09    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 rkauskh 10 Unities + Antwort hilfreich

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

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