| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Nummerierung automatisch hochzählen (1039 / mal gelesen)
|
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 212 Registriert: 31.01.2020 Windows 11 Pro 64-Bit - Corsair 7000D Airflow - Asus ROG Maximus Z790 Hero - Intel Core i9-13900KS - Teamgroup T-Force 2x48GB DDR5 RAM @ 5600 MHz - Crucial T700 SSD 2TB M2 - Gainward NVIDIA GeForce RTX 4090 24GB - Corsair HX1000i - Corsair K55 RGB - Corsair Dark Core Pro - Corsair Void Elite Wireless - Corsair ST100 RGB - Elgato Stream Deck 15 Tasten - AutoCAD MEP 2023 - Revit 2021.1.9 + 2022.1.6 + 2023.1.4 + 2024.2.1 + 2025.0.2
|
erstellt am: 29. Jul. 2021 15:28 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 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: 212 Registriert: 31.01.2020
|
erstellt am: 29. Jul. 2021 15:40 <-- editieren / zitieren --> Unities abgeben:
|
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 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: 22275 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: 212 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: 22275 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: 212 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: 22275 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: 22275 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 |