<I forgot to include the list...>
Hi there Ramon,
sorry for long reply but it's a reply to 2 mails in one :-)
Ramon Bueno wrote:
> Hello Phillip,
... with one "l" please... :-) (Don't worry, just nitty gritty)
> a) Down below are the additional COM/ActiveX & java tests you requested
> and their results.
Actually all test results look good.... read on.
> b) Regarding the script I left running last night: This morning I saw
> these final messages in the Octave window. (plus, when I "quit" Octave I
> saw a flood of messages fly by, very fast, could not read them). In
> addition, the output Excel file that last night was being filled with
> separate worksheets by the Matlab code (I recall seeing 5 sheets with
> data in them)....well today the file is still there, but it is 0 KB in
> size and is basically empty. It seems as if perhaps the closing code
> wiped it out?
No, I strongly suspect something in your ML scripts, see below.
But your previous batch of error messages shows that you'd better
increase the Java virtual memory settings, see below too.
<snip>
> octave.exe:4> exl = actxserver ('Excel.Application')
> error: `actxserver' undefined near line 4 column 7
This means the windows package hasn't been loaded or installed.
> octave.exe:4> *pkg load java*
No errors, so this is good.
BTW why are there a leading and trailing asterisk?
> octave.exe:5> *pkg load windows*
No errors, this is good.
> octave.exe:6> *exl = actxserver ('Excel.Application')*
> exl =
> <COM object _Application (0x0x89887c)>
This is good.
> octave.exe:7> *delete ('exl')*
> warning: delete: no such file: exl
exl = a "variable" (COM object), not a file name, so shouldn't be
enclosed in quotes.
I forgot to mention that before delete () one should enter "exl.Quit()"
(w/o quotes), sorry for that.
> octave.exe:8> *xls1 = xlsopen ('TEST_MATLAB_input.xls', 0, 'com')*
> Excel/COM interface requested... Excel (COM) OK.
> xls1 =
<snip>
This is good. So COM/ActiveX & invoking Excel works.
<snip>
> octave.exe:11> *tmp = java_new ('java.lang.String', 'abc')*
> tmp = abc
Good, your java works.
> octave.exe:12>* javaclasspath*
> warning: split is obsolete and will be removed from a future version of
> Octave;
> please use strsplit instead
Known "buglet" of the java package, doesn't harm.
> C:\Octave\3.2.4_gcc-4.4.0\bin\dom4j-1.6.1.jar
<...etc...>
<snip>
Perfect.
> octave.exe:13> *xls2 = xlsopen ('TEST_MATLAB_input.xls', 0, 'poi')*
> Java/Apache POI interface requested... Java/Apache (POI) OK. (& OOXML OK)
> xls2 =
<...etc...>
<snip>
Perfect. The java POI interface for Excel works OK.
> octave.exe:15*> xls3 = xlsopen ('TEST_MATLAB_input.xls', 0, 'jxl')*
> Java/JExcelAPI interface requested... Java/JExcelAPI (JXL) OK.
> xls3 =
<...etc...>
> octave.exe:16> *xlsclose (xls3)*
>
> ans = [](0x0)
Perfect. JExcelAPI, the other java-based Excel interface, also works.
My conclusion is that there's nothing wrong with your setup, except that
the windows & java package should be loaded automatically (see below for
hints).
This means the problem probably is in your Matlab scripts. I'm afraid
you will have to clean up & debug your ML-scripts first.
As a first shot I had a look at the list of error messages you sent me
earlier on:
START============================================================
> warning: single quote delimited string near line 396 of file
C:\Octave\3.2.4_gcc
> -4.4.0\share\octave\packages\io-1.0.11\oct2xls.m
I think this implies that in your Matlab scripts there's an error with
properly enclosing names in quotes. Single or double quote shouldn't
matter; Matlab only knows about single quotes, Octave does both, but "
and ' cannot be mixed around one and the same string.
>
> warning: potential Matlab compatibility problem: " used as string
> delimiter near
> line 399 offile C:\Octave\3.2.4_gcc-4.4.0\share\octave\packages
> \io-1.0.11\oct2x
> ls.m
...Very intruiging....
Some script is monitoring the octave scripts for ML compatibility. That
is Not Good, not even necessary, and probably even harmful.
I'd check all the ML scripts and shut off this ML compatibility checking
interference.
(Or is it the oct2mat package that was loaded accidentally - you did
write that you explicitly didn't install it?)
>
> warning: implicit conversion from string to real N-d array
...I suppose a consequence of the same issue.
>
> ncols = 1
...Yep, a stray harmless echo that has been fixed (in svn) several
months ago.
But by coincidence it IS informative in your situation - *do* you or
your scripts use/specify spreadsheet ranges of only 1 column wide?
(would be a nice check)
>
> warning: concatenation of different character string types may have
unintended c
> onsequences
...Consequence of same issue as above I think.
============================================================END
Well, I'll have to draw the line here. Debugging scripts originating
from ML is not quite my responsibility as IO package maintainer :-) :-)
Nevertheless your reports are very useful to me.
Please remove the ML compatibility checks first and try again.
OK, from your earlier mail:
> <snip> I then tried "pkg load all"
> in a new session and Octave similarly stops working but no messages
> appear.
IIRC the ga, octcdf & ?communications? packages interfere with the
Windows package or had other fatal issues. See the README of the
octave-3.2.4 MingW binary package you downloaded & installed.
Please restart octave and using "pkg list", make sure that these
packages + oct2mat package are NOT loaded (have no asterisk mark). Use
"pkg unload <pkgname>" one by one if needed.
Then, to make sure that java pkg is loaded automatically:
pkg rebuild -auto java (will settle it once and for all)
When that's done, make a plain text file called "java.opts" (w/o quotes)
and put it in <octave>\share\octave\packages\java-<version>, containing
just these 2 lines:
-Xms16m
-Xmx512m
and restart octave. This will increase java's working memory
availability from 16 to 508 MiB. If you have fairly big spreadsheets
this is a fairly vital setting.
Don't worry, this amount of memory is only "pre-reserved", not
immediately grabbed, and only piecewise borrowed from and returned to
the windows (and other OS's) memory managers by java.
To make sure that windows is loaded automatically, enter the pkg load
command in octaverc as I mentioned in an earlier mail.
Do not do it like the java package; my suggestion to put it in octaverc
is actually a workaround for a bug affecting the octave-3.2.4 windows
binary.
>
> - Java jre6 is in both \Program Files and\Program Files (x86). I'm
> not sure how jre6 relates to the 1.6 version you mention.
jre6 = Java 1.6.x.x.
It's all OK.
Hopefully you'll manage to fix your ML scripts. There's something alien
in there that is quite unfriendly to non-ML scripts. I'm curious as to
what it actually is.
If you don't mind, can you please strip the various xlsread / xlswrite
calls from your scripts and mail them to me, so I can check if those
calls match octave's calls (which /should/ be ML-compatible)?
Best wishes & thanks,
Philip
------------------------------------------------------------------------------
This SF.net email is sponsored by
Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________
Octave-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/octave-dev