| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Interessen Frage. Liste einlesen. (571 mal gelesen)
|
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
 
 Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 13. Jan. 2009 10:42 <-- editieren / zitieren --> Unities abgeben:         
Hallo Forum, Ich möchte mal wieder eure Hilfe in Anspruch nehmen. Ist eigentlich nur Interessenhalber. Hab eine Liste die wie folgt aufgebaut ist. Linie 0.1 0.2 Linie 0.3 0.3 Linie 0.4 1.5 ....... Zwischen den Linie und der zahl ist ein Tab und zwischen den Zahlen ist auch ein Tab. Wollte fragen ob man die Drei werte in 3 Variabel raus schreiben kann ? Hab es probiert kriege aber nur einen String raus „linie/t0.1/t0.2“. Jetzt weiß ich aber nicht wie ich auf die einzelnen Sachen filtern kann. Hab es mit stutzen der String probiert, da aber die zahle sich variieren hilft das nichts. Ich wollte eigentlich nur fragen ob das überhaust möglich ist ? Eine Lösung in Lisp wer mir an liebsten wenn es in VBA aber besser geht ist das auch gut. Ich bedanke mich schon mal im voraus. Mit freundlichen Grüßen Firephoenix
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: 13. Jan. 2009 10:53 <-- editieren / zitieren --> Unities abgeben:          Nur für FiRePhoeniX
|
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 13. Jan. 2009 10:56 <-- editieren / zitieren --> Unities abgeben:          Nur für FiRePhoeniX
Mal ein bißchen Bsp-Code: (setq ZEILE "linie\t0.1\t0.2") (setq LISTE nil) (while (setq POS (vl-string-search "\t" ZEILE)) (setq LISTE (cons (vl-string-trim " " (substr ZEILE 1 POS))LISTE)) (setq ZEILE (substr ZEILE (+ POS 2))) ) (setq LISTE (cons ZEILE LISTE)) (setq LISTE (reverse LISTE)) und wenn du die Zahlen als Zahlen haben willst : noch das hinterher (mapcar '(lambda(X / Y)(if(setq Y (distof X)) Y X))LISTE)
und Zuweisungen kann man auch gleich machen
(mapcar '(lambda(X Y)(set (read X) Y)) '("A" "B" "C")LISTE) danach sind die Werte an die Variablen A B C gebunden
------------------ - 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 |
CADchup Ehrenmitglied V.I.P. h.c.

 Beiträge: 3338 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 13. Jan. 2009 11:01 <-- editieren / zitieren --> Unities abgeben:          Nur für FiRePhoeniX
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 13. Jan. 2009 12:25 <-- editieren / zitieren --> Unities abgeben:          Nur für FiRePhoeniX
ich verwende dazu dieses kleine Lisp Code:
;------------------------------------------------------------------------------ ; Fuktion Split ; wandelt einen string in eine liste um ; (split "Anton Berta Cäsar" " ") -> '("Anton" "Berta" "Cäsar") ;------------------------------------------------------------------------------ (defun Split (String Separator / ) (setq string (replace string "\\" "/")) (setq String (replace String Separator "\"\"")) (setq String (strcat "(list \"" String "\")")) (eval (read String)) )
damit erhäst du mit (split "linie/t0.1/t0.2" "/t")
folgendes Ergebnis ('"linie" "0.1" "0.2") Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
 
 Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 13. Jan. 2009 15:32 <-- editieren / zitieren --> Unities abgeben:          Nur für FiRePhoeniX
|

| |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13530 Registriert: 30.11.2003 .
|
erstellt am: 13. Jan. 2009 15:43 <-- editieren / zitieren --> Unities abgeben:          Nur für FiRePhoeniX
Zitat: Original erstellt von neurosis: @cadmium: warum so "kompliziert"? statt (mapcar '(lambda(X Y)(set (read X) Y)) '("A" "B" "C")LISTE) reicht auch (mapcar 'set '(a b c) liste)gruss marco
naja .. meistens lese ich Variablennamen auch aus Dateien oder sonstwo her ein .. und dann sind sie Strings ... Was ich als lambda-Ausdruck übergebe hängt vom jeweiligen Konsens ab... dieses Posting dient max. als Beispiel für solche Zuweisung ... fertige Tools sehen bei auch bei mir anders aus. wer das mapcar scheut ( zu "kompliziert" ist), kann ja hier auch auf car ,cadr .... zugreifen ------------------ - 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 |