Re: MathLink and Notebooks
- To: mathgroup at smc.vnet.net
- Subject: [mg37541] Re: MathLink and Notebooks
- From: "Lawrence A. Walker Jr." <lwalker701 at earthlink.net>
- Date: Mon, 4 Nov 2002 02:44:06 -0500 (EST)
- Organization: Morgan State University, COMSARE
- References: <apva81$rh5$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Hi Cesar,
Try the following
MLNextPacket(stdlink); // drain packet
MLNewPacket(stdlink); // discard packet
Instead of ...
MLEndPacket(stdlink);
MLFlush(stdlink);
MLNewPacket(stdlink);
For more info, refer to Todd Gayley's, A Mathlink Tutorial (perhaps on
MathSource).
Lawrence
Cesar Guerra wrote:
> Hi MathGroup,
>
> Working with MathLink and Mathematica functions to manipulate notebooks I had the following problem
>
> I tried to make a MathLink function which before giving the final result, it sends to mathematica information about how the process is going on ( for example convergence of a variable or an index in a loop). The point is that printing all this could be very long ( a file is better in this case ) and I wanted a cell which is edited and deleted as the process goes on. The following function is a model of what iI intented
>
> /*******************************************************************/
>
> :Begin:
> :Function: test
> :Pattern: test[]
> :Arguments: {}
> :ArgumentTypes: {}
> :ReturnType: Integer
> :End:
>
> /********************************************************************/
>
> int test()
> {
> int i,j;
>
> for ( i=0;i<100 ;i++ )
> { /* Sending the variable i to be displayed in Mathematica */
> MLPutFunction(stdlink,"EvaluatePacket",1);
> MLPutFunction(stdlink,"CompoundExpression",2);
> MLPutFunction(stdlink,"NotebookWrite",3);
> MLPutFunction(stdlink,"SelectedNotebook",0);
> MLPutFunction(stdlink,"Cell",2);
> MLPutFunction(stdlink,"ToString",1);
> MLPutInteger(stdlink,i);
> MLPutString(stdlink,"Program");
> MLPutSymbol(stdlink,"All");
>
> MLPutSymbol(stdlink,"Null");
> MLEndPacket(stdlink);
> MLFlush(stdlink);
> MLNewPacket(stdlink);
> }
>
> /* This is the final answer */
> return 0;
> }
> /********************************************************************/
>
> The function works fine until leaving the for loop. After that the link is lost. I can't fix this problem, I suppose that I don't treat the return packets in a proper way. I would be very greateful for any hints about this
>
> Best regards......
>
> Cesar
>
>
>
--
Lawrence A. Walker Jr.
http://www.kingshonor.com