|
AutoLisp : Lisp immer kränker?
mapcar am 05.08.2005 um 10:03 Uhr (0)
Bin eben mal wieder auf ein sehr merkwürdiges Verhalten in VLisp gestoßen: Code: (defun c:bugtest( / i rl) (setq i 0) (repeat 256 (setq rl(cons(list i i i)rl)) (setq i(1+ i)) ) (setq *result* (reverse rl)) ) Hat jemand eine Erklärung für diesen Quatsch? Die globale Variable *result* ist völlig gesund! (length *result*) = 256 (car *result*) = (0 0 0) (last *result*) = (255 255 255) Aber bei der Ausgabe tritt der Fehler auf. Gruß, Axel Strube-Zettler ------------------ Meine AutoL ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
CADmium am 05.08.2005 um 11:17 Uhr (0)
Hi Axel.. is ja tricky.. Hmm .. vielleicht wird für den Rückgabewert der Funktion bloß ein gewisser Speicherplatz reserviert, und deine Liste ist zu lang? Bis (repeat 220 ... ist nämlich alles ok .. und wenn man einen anderen Rückgabewert setzt auch... z.B. (defun c:bugtest( / i rl) (setq i 0) (repeat 250 (setq rl(cons(list i i i)rl)) (setq i(1+ i)) ) (setq *result*(reverse rl)) T ) Du bist dran. ------------------ - Thomas - "Bei 99% aller Probleme ist die umfassende Beschrei ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
Dabrunz am 05.08.2005 um 11:25 Uhr (0)
Tag zusammen. Zitat: Hat jemand eine Erklärung für diesen Quatsch? Die globale Variable *result* ist völlig gesund! Keine wirklich fachlich fundierte und belegbare, aber weitere Beobachtungen kann ich ergänzen: 1. Das Autocad-Textfenster hat eine Begrenzung, die die größte mögliche Ausgabe auf 4095 Zeichen beschrankt. Danach wird gnadenlos abgeschnitten: Code: (defun c:bugtest( / i rl) (setq i 0) (repeat 701 (setq rl(cons(list i)rl)) (setq i(1+ i)) ) (setq *result* (reverse rl)) ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
mapcar am 05.08.2005 um 13:04 Uhr (0)
Zitat: Original erstellt von CADmium: Bis (repeat 220 ... ist nämlich alles ok .. und wenn man einen anderen Rückgabewert setzt auch... Das Problem liegt ja nicht im Rückgabewert, es liegt an der Ausgabe. Das T am Ende deiner Version verhindert den Ausdruck im Textfenster, aber das Problem ist dadurch nicht weg: Gibt man !*result* oder (princ *result*) ein, hat man es ja immer wieder am Backen. Achims Version mit dem String ist natürlich auch sehr interessant. Aber irgendein System dahinter erken ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
mapcar am 05.08.2005 um 13:20 Uhr (0)
Zitat:Original erstellt von Dabrunz:Warum werden eigendlich die schließenden CODE-Tags ignoriert und die Formatierung nicht wieder in den Normal-Modus versetzt?Diese Frage hat mich auch schon interessiert: Wenn der Code eine Leerzeile enthält, gehts in die Hose.Gruß, Axel------------------Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
wronzky am 05.08.2005 um 14:56 Uhr (0)
Sehr komisch!Mit dem Speicherplatz hats nichts zu tun:- setz mal i als anfangswert auf -1000 und repeat auf 1000 - kein Problem.- anders bei:Code:(list (list 220 220 220)) ergibt schon BAD ARGUMENT TYPE. Aber nur, wenn die erste Zahl zwischen 220 und 239 liegt...????????Grüsse, Henning------------------VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
CADmium am 05.08.2005 um 16:38 Uhr (0)
...is ja echt krank...------------------ - Thomas -"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
Dabrunz am 05.08.2005 um 16:46 Uhr (0)
Zitat:- anders bei:Code:(list (list 220 220 220)) ergibt schon BAD ARGUMENT TYPE. Aber nur, wenn die erste Zahl zwischen 220 und 239 liegt...????????Wirklich abgefahren, aber das ist wohl der Schlüssel des Problems! Ich habe noch ein paar Beispiele angesehen und siehe da:((230 1)) - kein Problem((230 1 1)) - ein Problem((230 1 1 1)) - ein Problem((230 1 1 1 1)) - kein ProblemDabei spielts keine Rolle, welcher der Zahlen aus [220; 239] am Anfang der Liste steht. Schreibe ich aber:((230.0 1 1 1)) - kein Pro ...
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
Apply2CAD am 05.08.2005 um 16:56 Uhr (0)
Hat REVERSE vielleicht eine Grössenbeschränkung GrussRalph
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
wronzky am 05.08.2005 um 16:59 Uhr (0)
Noch was ganz komisches:Der Fehler ist eigentlich kein Fehler, dennCode:(vl-catch-all-apply list ((220 220 220)))liefert korrekt ((220 220 220)) zurück und kein #%catch-all-apply-error%. Und erst nach der Rückgabe kommt BAD ARGUMENT TYPE, allerdings ohne die sonst übliche Erläuterung, welches Argument denn nun falsch ist.Grüsse, Henning------------------VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
Apply2CAD am 05.08.2005 um 17:18 Uhr (0)
REVERSE müßte als copy-func definiert sein. Es kann passieren, das der LispStack dabei überläuft (siehe Fehlermeldungen im "alten" Handbuch Benutzanpassungen).
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
Apply2CAD am 05.08.2005 um 17:30 Uhr (0)
Quelle von Reini Urban
|
In das Form AutoLisp wechseln |
|
AutoLisp : Lisp immer kränker?
Dabrunz am 05.08.2005 um 18:36 Uhr (0)
Zitat:REVERSE müßte als copy-func definiert sein. Es kann passieren, das der LispStack dabei überläuft (siehe Fehlermeldungen im "alten" Handbuch Benutzanpassungen).Das hat aber gar nix mit dem hier beschr. Problem zu tun.Achim------------------
|
In das Form AutoLisp wechseln |