| |
| 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
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 / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 29. Jul. 2021 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
|
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 29. Jul. 2021 15:40 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 29. Jul. 2021 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
|
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 29. Jul. 2021 17:10 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
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
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 30. Jul. 2021 08:41 <-- editieren / zitieren --> Unities abgeben:
Prüfung Code: Befehl: (type index) STR
Habe danach INDEX "händisch" auf 10 gesetzt. Code: Befehl: (setq INDEX 10) 10Befehl: (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") 3Converts 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))) 2Befehl: (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 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 30. Jul. 2021 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
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
Beiträge: 194 Registriert: 31.01.2020
|
erstellt am: 30. Jul. 2021 10:27 <-- editieren / zitieren --> Unities abgeben:
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 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 30. Jul. 2021 10:44 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
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 良い精神
Beiträge: 21533 Registriert: 03.06.2002 Alles
|
erstellt am: 30. Jul. 2021 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
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 |