Hello, AmiVar is an UNION, you must assign only ONE field. If you are assigning value to string you MUST NOT assign value to .val member of an union.
AmiVar var; var.type = VAR_STRING; var.string = (char*)resultsym[11]; var.val = EMPTY_VAL; /// WRONG !!! REMOVE THIS ! http://msdn.microsoft.com/en-us/library/y9zewe0d(VS.80).aspx Also you must NOT return char arrays created on stack because they will disappear when function goes out of scope. You must use gSite.Alloc() to allocate memory dynamically and use this memory to write the string to. Best regards, Tomasz Janeczko amibroker.com ----- Original Message ----- From: "markedme9" <[email protected]> To: <[email protected]> Sent: Sunday, August 30, 2009 10:51 PM Subject: [amibroker] Passing string via AmiVar > Hi, > > I am having trouble with passing strings. > I get access violation error. > > AmiVar AlterSymbol( int NumArgs, AmiVar *ArgsTable ) > { > AmiVar var; > var.type = VAR_STRING; > var.string = (char*)resultsym[11]; > var.val = EMPTY_VAL; > return var; > } > > "AlterSymbol", { AlterSymbol, 0, 0, 0, 0, NULL } > > In AFL fomula it is called as > AlterSymbol (); > > > I dont get access violation error when I pass a string directly > var.string = "some text"; > > > Is this the right way to do it? > > > Thanks > > > > ------------------------------------ > > **** IMPORTANT PLEASE READ **** > This group is for the discussion between users only. > This is *NOT* technical support channel. > > TO GET TECHNICAL SUPPORT send an e-mail directly to > SUPPORT {at} amibroker.com > > TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at > http://www.amibroker.com/feedback/ > (submissions sent via other channels won't be considered) > > For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG: > http://www.amibroker.com/devlog/ > > Yahoo! Groups Links > > >
