emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] Problem with lisp code in spreadsheet


From: Carsten Dominik
Subject: Re: [Orgmode] Problem with lisp code in spreadsheet
Date: Sun, 17 Jun 2007 11:56:24 +0200

On Jun 17, 2007, at 8:22, Cecil Westerhof wrote:

Op zo, 17-06-2007 te 00:14 +0200, schreef Carsten Dominik:
In a row I have the following formula's:
  =$3
  ='(getHours $2);%.2f
  ='(/ 67 0.72);%.1f
  ='(/ $3 (getHours $2));%.1f
This gives:
  67
  0.72
  93.1
  0.0

I would expect the last two to return the same number. Why is this not
the case?

When I change the last formula to:
  ='(/ 67 (getHours $2));%.1f
I get:
  93.5

What is happening here?

Since I don't know exactly what getHours does, I cannot be sure.
The most likely reason though is that $3 and $2 are interpolated into
Lisp expressions as strings, not as numbers.

The tabel:
        |--------+------+----+-----+------+----+------|
        | Arnhem | 0:43 | 67 | 0.0 | 93.1 | 67 | 0.72 |
        |--------+------+----+-----+------+----+------|
#+TBLFM: $4='(/ $3 (getHours $2));N%.1f::$5='(/ 67 0.72);%.1f::$6=$3::$7='(getHours $2);%.2f::

getHours:
        (defun getHours(time)
          (interactive "sHH:MM: ")
          (let ((timelist (split-string time ":")))
            (+
              (string-to-number (car timelist))
              (/
                (string-to-number (cadr timelist))
                60.0
              )
            )
          )
        )

The strange thing is that $3 is 67 and when I change $3 to 67 it works.


What is going wrong is that you want $2 to be interpreted as a string,
and $3 as a number.  So you could leave off the N flag again and write
(string-to-number $3)

Hmmm, maybe this is not completely satisfying now, maybe it would
be good to have replacements literally and then to write (getHours "$2"), that
might also be an option.

Needs more thinking.

- Carsten



Even changing the formul to:
        ='(/ (string-to-number $3) (getHours $2));N%.1f
does not work.

See the discussion of the N mode flag in

http://staff.science.uva.nl/~dominik/Tools/org/org.html#Formula- syntax-
for-Lisp

The problem is with $3, so I would not know how to use that. :-{

--
Cecil Westerhof <address@hidden>



_______________________________________________
Emacs-orgmode mailing list
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode



--
Carsten Dominik
Sterrenkundig Instituut "Anton Pannekoek"
Universiteit van Amsterdam
Kruislaan 403
NL-1098SJ Amsterdam
phone: +31 20 525 7477





reply via email to

[Prev in Thread] Current Thread [Next in Thread]