McFraGG de gekste !!
Dat is geen volledige s-expressie (de haakjes zijn niet in balans) dus daar kunnen we weinig mee.
In z'n algemeenheid helpt het in LISP (zeker als beginner) om je code zo te formatteren dat de structuur van expressies duidelijk is. Bijvoorbeeld:
Dit moet toch wel enigzins duidelijk zijn?
In z'n algemeenheid helpt het in LISP (zeker als beginner) om je code zo te formatteren dat de structuur van expressies duidelijk is. Bijvoorbeeld:
Common Lisp:
1
2
3
4
5
6
7
8
9
10
| ( > ( getvar "cdate" ) ( + ( * t1 10000 ) ( * t2 100 ) t3 ) ) |
Dit moet toch wel enigzins duidelijk zijn?
ah wel het is zo maar een kopie uit een regel
dit is de gehele functie
maar sinds vandaag opeens gaf hij een foutmelding met bad function (0)
nu waren we er al wel achter dat (einde = 1) geen functie is dus die hebben we verwijderd het script geeft nu wel resultaat.
De vraag is waarom het script nu juist vandaag de eerste clause uit de if pakt (dus (einde = 1))
Hierom de vraag
Wat wordt er nu geevalueerd in
dit is de gehele functie
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| (defun draw_esi (bestand / )
(if (setq file (open bestand "r")) nil (exit))
(setq regel (read-line file))
(setq teller (1+ teller))
(if (> (getvar "cdate") (+ (* t1 10000) (* t2 100) t3))
(einde = 1)
(while regel
; bepaal of de regel met + of - begint
(if (wcmatch regel "+*,-*") (coordinaat) (machinecode))
; lees een nieuwe regel in
(setq regel (read-line file))
(setq teller (1+ teller))
)
)
(close file)
) |
maar sinds vandaag opeens gaf hij een foutmelding met bad function (0)
nu waren we er al wel achter dat (einde = 1) geen functie is dus die hebben we verwijderd het script geeft nu wel resultaat.
De vraag is waarom het script nu juist vandaag de eerste clause uit de if pakt (dus (einde = 1))
Hierom de vraag
Wat wordt er nu geevalueerd in
code:
?
1
| if (> (getvar "cdate") (+ (* t1 10000) (* t2 100) t3)) |
McFraGG de gekste !!
Nogmaals: niet-ingesprongen LISP code is extreem vervelend. Ga dat eerst maar eens fixen. Ok, is gefixt. 
Verder: als je van de code die ik postte (die de conditie voor je if-expressie vormt) niet kunt bedenken wat 'ie doet, dan kun je beter opnieuw beginnen met je tutorial/handboek/whatever je gebruikt om de taal te leren.
Snap je wat "123" betekent? Snap je wat "(+ 123 456)" betekent? Snap je wat "(< (+ 123 456) 789)" betekent? Dan kan de rest van die expressie toch geen probleem vormen?
Overigens, nadat je de expressie ontcijferd hebt, lijkt de meer relevante vraag me: waar komen t1, t2 en t3 vandaan en wat betekenen ze?
Verder: als je van de code die ik postte (die de conditie voor je if-expressie vormt) niet kunt bedenken wat 'ie doet, dan kun je beter opnieuw beginnen met je tutorial/handboek/whatever je gebruikt om de taal te leren.
Snap je wat "123" betekent? Snap je wat "(+ 123 456)" betekent? Snap je wat "(< (+ 123 456) 789)" betekent? Dan kan de rest van die expressie toch geen probleem vormen?
Overigens, nadat je de expressie ontcijferd hebt, lijkt de meer relevante vraag me: waar komen t1, t2 en t3 vandaan en wat betekenen ze?
[ Voor 31% gewijzigd door Soultaker op 22-11-2010 10:41 ]
kijk, ik kom toch wel ergens ..
(setq t1 1997)
(setq t2 6)
(setq t3 1)
dit zijn de vars t*
mijn inziens kijkt hij dus of de cdate groter is dan (+ (* t1 10000) (* t2 100) t3)
is 20101122.10484602 groter dan 1997601 ?
ja
dus hij pakt statement (einde = 1) ; wat een bad function is.
maar waarom deed deze functie het dan vorige week wel ?
en precies vandaag op elk workstation niet ?
na verwijderen van de clause (einde = 1) werkt alles weer ..
(setq t1 1997)
(setq t2 6)
(setq t3 1)
dit zijn de vars t*
mijn inziens kijkt hij dus of de cdate groter is dan (+ (* t1 10000) (* t2 100) t3)
is 20101122.10484602 groter dan 1997601 ?
ja
dus hij pakt statement (einde = 1) ; wat een bad function is.
maar waarom deed deze functie het dan vorige week wel ?
en precies vandaag op elk workstation niet ?
na verwijderen van de clause (einde = 1) werkt alles weer ..
McFraGG de gekste !!
Sorry hoor, maar de basale werking van operators mag je toch echt uit een lesboek of tutorial halen. We runnen hier een discussieforum, geen helpdesk en al helemaal geen prive-les.
Het is niet alsof er complexe wiskunde toegepast wordt in die expressie. 
Daarnaast: als je code van anderen niet begrijpt is de eerste logische stap om even contact op te nemen met die persoon. Hij weet als geen ander wat die code doet.
Dit topic gaat in elk geval op slot bij gebrek aan eigen inzet.
Daarnaast: als je code van anderen niet begrijpt is de eerste logische stap om even contact op te nemen met die persoon. Hij weet als geen ander wat die code doet.
Dit topic gaat in elk geval op slot bij gebrek aan eigen inzet.
'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.
Pagina: 1
Dit topic is gesloten.
![]()