Apparently the array int[] is passed as safearray. I'm not sure in J's
built-in olecom can handle safearray.  Did you test the code run inside
32-bit but failed on 64-bit environment? Or you may try fix the int[] object
and use getm/setm to directly read and write memory content.  You may
get a fairly accurate idea of the internal structure of a J array
from browsing the source code of the j memory map file script.

Втр, 12 Окт 2010, Martin Pelletier писал(а):
>   Basically, I took Alex Rufon's session class from 
> http://www.jsoftware.com/jwiki/Guides/J%20VB.NET
> 
> With a simplified initialize function:
> 
> private void initialize()
> {
>      // Create a new copy of the J Object and make sure were in the Z locale
>      jObject = new JEXEServerClass();
>      jObject.Quit();
>      jObject.Do(@"BINPATH_z_=:1!:46''");
>      jObject.Do(@"ARGV_z_=:'oleclient';'-jijx'");
>      jObject.Do(@"(3 : '0!:0 y')<BINPATH,'\profile.ijs'");
> 
>      if (debug)
>      {
>          // Shows a complete J console
>          jObject.Do("newijx_jijs_''");
>      }
> 
>      // Get J version
>      object result;
>      jObject.DoR("9!:14 ''", out result);
> 
>      jObject.Do("18!:4 <'z'");
> }
> 
> And here is the program (main function and a little helper function):
> 
> using System;
> 
> namespace JSoftware
> {
>      class Program
>      {
>          static void Main()
>          {
>              Session jSession = new Session(true);
>              int singleInt = 16;
>              jSession.Variable("SingleInt", singleInt);
>              object singleIntObj = jSession.Variable("SingleInt");
> 
>              //This should work fine
>              Console.WriteLine("Original single int value  : " + singleInt);
>              Console.WriteLine("J returned single int value: " + 
> ((int)singleIntObj));
>              //Verify manually SingleInt in your J Session, value should 
> be identical
> 
>              int[] intArray = { 4, 8, 15, 16, 23, 42 };
>              jSession.Variable("IntArray", intArray);
>              object intArrayObj = jSession.Variable("IntArray");
> 
>              //This should also work fine
>              Console.WriteLine("Original int array value  : " + 
> (IntArrayToString(intArray)));
>              Console.WriteLine("J returned int array value : " + 
> (IntArrayToString((int[])intArrayObj)));
> 
>              //But break here and look at IntArray in J 64bit
>              Console.ReadLine();
>          }
> 
>          private static string IntArrayToString(int[] array)
>          {
>              string result = "";
>              foreach (int single in array)
>              {
>                  result += single + " ";
>              }
>              return result.Trim();
>          }
>      }
> }
> 
> The code is a tiny bit different from the project, but is essentially 
> the same. I just thought providing a ready-made project would be easier, 
> but I'm more than willing to adapt to get to the bottom of this issue.
> 
> Martin Pelletier
> 
> On 2010-10-12 09:41, bill lam wrote:
> > I am afraid not too many of us want to install visual studio express in 
> > order to
> > open your project.  May be you can just post some relevant code by email for
> > discussion.
> >
> > Втр, 12 Окт 2010, Martin Pelletier писал(а):
> >
> 
> -- 
> Martin Pelletier
> Informatique / Software Development
> Infodev Electronic Designers International Inc.
> Tel : +1 (418) 681-3539, poste /ext. 114
> Fax : +1 (418) 681-1209
> 
> Confidentiality Note: This e-mail may contain confidential information 
> belonging to Infodev Electronic Designers Inc. If you are not the intended 
> recipient, be aware that any disclosure, copying, distribution or use of the 
> contents of this e-mail is strictly prohibited. If you have received this 
> e-mail in error, please delete this e-mail and notify the sender immediately.
> 
> Note de confidentialité: Ce courriel peut contenir des informations 
> confidentielles qui appartiennent à Infodev Electronic Designers Inc. Si vous 
> avez reçu ce courriel par erreur, veuillez l'effacer et aviser l'expéditeur 
> immédiatement. Toute diffusion, utilisation ou copie de ce message ou des 
> renseignements qu'il contient par une personne autre que le (les) 
> destinataire(s) désigné(s) est strictement interdite.
> 
> ----------------------------------------------------------------------
> For information about J forums see http://www.jsoftware.com/forums.htm

-- 
regards,
====================================================
GPG key 1024D/4434BAB3 2008-08-24
gpg --keyserver subkeys.pgp.net --recv-keys 4434BAB3
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to