Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Nummerierung automatisch hochzählen

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:  Nummerierung automatisch hochzählen (906 mal gelesen)
Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

Windows 10 Pro - 64-Bit -
Lenovo Thinkstation P520 -
Intel Xeon W-2255 CPU @ 3.70 GHz 10 Kerne -
3x32GB DDR4 RAM @ 2933 MHz -
WD Blue SN570 SSD 1000GB -
Samsung MZVLB512HAJQ-000L7 SSD 500GB -
NVIDIA Quadro P2200 5GB -
Elgato Stream Deck 15 Tasten -
AutoCAD MEP 2019 -
Revit 2018+2019+2020+2021+2022

erstellt am: 29. Jul. 2021 15: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

Hallo.
Was mache ich hier falsch?

Code:
Befehl: (setq INDEX (1+ INDEX))
Fehlerhafter Argumenttyp: numberp: "10"

Er müsste doch eigentlich 1+10 = 11 Rechnen 

------------------

Gruß
Manuel

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 29. Jul. 2021 15: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 Manuel486 10 Unities + Antwort hilfreich

was ist denn der Wert von INDEX, bevor du 1 addierst?

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 29. Jul. 2021 15:40    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

Der Wert von Index ist in diesem Fall 10.

------------------

Gruß
Manuel

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

CADwiesel
Moderator
CAD4FM UG




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

Beiträge: 1968
Registriert: 05.09.2000

AutoCAD, Bricscad
Wir machen das Mögliche unmöglich

erstellt am: 29. Jul. 2021 15:53    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 Manuel486 10 Unities + Antwort hilfreich

ach sorry jetzt seh ich es erst...
(+ 1 index)
so geht das

------------------
Gruß
CADwiesel
Besucht uns im CHAT

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 29. Jul. 2021 17:10    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 Manuel486 10 Unities + Antwort hilfreich

Beides würde funktionieren wenn der Index Wert wirklich 10 wäre,
ist er aber nicht.
(er ist "10" - sieht man ja an der Fehlermeldung. Auch das eine Nummer erwartet aber nicht übergeben wird.
Prüfung (type index)
addieren kann man nur real und int, nicht aber Zeichenketten.


Editiert/Ergänzt

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 30. Jul. 2021 08:41    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

Prüfung
Code:
Befehl: (type index)
STR

Habe danach INDEX "händisch" auf 10 gesetzt.

Code:
Befehl: (setq INDEX 10)
10

Befehl: (type index)
INT

Befehl: (setq INDEX (+ 1 INDEX))
11



Ich habe einen String und brauche einen Integer, verstehe.
Dazu habe ich das hier gefunden:

Zitat:
Converts a string into an integer
(atoi string)
Command: (atoi "97")
97
Command: (atoi "3")
3
Command: (atoi "3.9")
3

Converts a string into a real number
(atof string)
Command: (atof "97.1")
97.1
Command: (atof "3")
3.0
Command: (atof "3.9")
3.9


Code:
Befehl: (setq INDEX (+ 01 (atoi INDEX)))
11

funktioniert.
Wenn aber der Index 01 ist, passiert das.

Code:
Befehl: (setq INDEX (+ 01 (atoi INDEX)))
2

Er nimmt die null weg. Ergebnis sollte 02 sein.

Jetzt habe ich versucht es mit strcat zu lösen.
Ergebnis:

Code:
Befehl: (setq INDEX (+ 1 (atoi INDEX)))
2

Befehl: (itoa INDEX)
"2"

Befehl: (setq NULL "0")
"0"

Befehl: (setq INDEX (strcat NULL INDEX))
Fehlerhafter Argumenttyp: stringp 2


Wie bekomme ich es hin das er von 02 bis 09 eine 0 (NULL) davor setzt?

------------------

Gruß
Manuel

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 30. Jul. 2021 09:02    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 Manuel486 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Manuel486:

>>"Wenn aber der Index 01 ist"
Der Index-Wert ist NIE 01
(setq index 01)
1

>>Jetzt habe ich versucht es mit strcat zu lösen.
ITOA und STRCAT ist genau richtig und du hast einfach nur zu früh gefragt - wärst sicher selber
zum Ziel gekommen (bin ich sicher). Jedes Mal wenn du den Bypass nimmst, fehlen dir dir Erfahrungen
und die Übung welche du durch die "verpassten" versuche und Recherche gemacht hättest ;)

Code:

(setq INDEX (+ 1 (atoi INDEX)))
2
(itoa INDEX)
"2"
(setq NULL "0")
"0"
(setq INDEX (strcat NULL INDEX))
Fehlerhafter Argumenttyp: stringp 2

STRCAT verkettet Zeichenketten, NUR Zeichenketten, die Meldung sagt das auch

>>Wie bekomme ich es hin das er von 02 bis 09 eine 0 (NULL) davor setzt?
Prüfe ob die Zahl kleiner 10 ist, falls ja - Ausgabe mit der Null davor, wenn nicht, dann ohne.

(if (< INDEX 10) (strcat "0" (itoa INDEX))(itoa INDEX))
oder
(strcat (if (< INDEX 10) "0" "") (itoa INDEX))


Slow down   

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

Manuel486
Mitglied
Technischer Zeichner Elektro


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

Beiträge: 194
Registriert: 31.01.2020

erstellt am: 30. Jul. 2021 10:27    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

Ich verstehe die Schreibweise nicht so ganz.

Befehl: (if (< INDEX 10) (strcat "0" (itoa INDEX)))
"01"

Befehl: (if (< INDEX 10) (strcat "0" (itoa INDEX))(itoa INDEX))
"01"

Warum 2x (itoa INDEX))?

Tue mich mit dem strcat echt schwer,
da muss man irgendwie ganz schön ums Eck denken.

------------------

Gruß
Manuel

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 30. Jul. 2021 10: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 Manuel486 10 Unities + Antwort hilfreich

Wird Zeit Manuel  

<ich schreibe SO nur weil ich denke du würdest das lösen können>


(if (< INDEX 10) (strcat "0" (itoa INDEX))(itoa INDEX))

>>da muss man irgendwie ganz schön ums Eck denken.
Überhaupt nicht, es ist komplett "doof" und simpel - Der lauter Wald vor Bäumen - Effekt.
Ich dachte so auch schon, aber genau das Gegenteil ist der Fall! Man muß SIMPEL denken,
so simpel wie man es im eigentlichen Leben kaum noch gewohnt ist.

>>Ich verstehe die Schreibweise nicht so ganz. / Warum 2x (itoa INDEX))?
Simpler wie die Zeile hier wird es nicht mehr, du musst dir einfach mehr Zeit nehmen!

>>Tue mich mit dem strcat echt schwer,
statt strcat hätte hier auch irgendeine andere Funktion stehen können, ich denke nicht das 'strcat' dein Problem ist,
hier geht es entweder um IF oder die Fähigkeit Klammern zu lesen - also was gehört zusammen.


(if ; IF-Funktion, erwartet eine Bedingung, einen DANN Part und optional einen SONST Part WENN, DANN (Optionsl ,ANSONSTEN)
(< INDEX 10); WENN, Index kleiner 10 ist
(strcat "0" (itoa INDEX)); DANN, verkette die Zeichenketten "0" mit "Index als Zeichenkette" => "02" ((als Beispiel, wenn Index = 2))
(itoa INDEX); SONST, gebe den Wert von Index als Zeichenkette zurück
)

|(setq INDEX 2)
|(strcat "0" (itoa INDEX))
|(strcat "0" "2")
|"02"

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 30. Jul. 2021 10:55    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 Manuel486 10 Unities + Antwort hilfreich

Hier noch mal die aufgeschlüsselte Schreibsweise mit dem ganzen IF-Ausdruck:

(if
(< INDEX 10)
(strcat "0" (itoa INDEX))
(itoa INDEX)
)
---
(if
T
(strcat "0" "2")
"2"
)
---
(if
T
"02"
"2"
)
---
(wenn nichtNil machdas ansonstendas)
(if  T        "02"    "2")

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