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

[amibroker] This is my 2nd day with AB and it is the simple things that



PureBytes Links

Trading Reference Links




<SPAN 
class=576583216-04022004>Thanks for replying, Tomasz.
<SPAN 
class=576583216-04022004> 
<SPAN 
class=576583216-04022004>Sorry about illegal assignment of the procedure result 
to a variable; I know that's wrong. It was a leftover from earlier versions of 
this test code, before I simplified the function/procedure to not return 
anything at all. A version of this test that doesn't do that is 
below.
<SPAN 
class=576583216-04022004> 
<SPAN 
class=576583216-04022004>Your temporary suggestion is workable, as is assigning 
the built-in variable to another variable before passing it into the procedure 
or function.
<SPAN 
class=576583216-04022004> 
<SPAN 
class=576583216-04022004>Keep me posted as you find out 
more,
<SPAN 
class=576583216-04022004> 
<SPAN 
class=576583216-04022004>Dave
<SPAN 
class=576583216-04022004> 
<SPAN 
class=576583216-04022004>-------------------
<SPAN 
class=576583216-04022004>procedure DummyProcedure(array) { local 
DoNothing;}procedure DummyProcedure2(array) { local 
DoNothing;}
 
<SPAN 
class=576583216-04022004>TestA = MA(C, 21);TestB = 
TestA;DummyProcedure(TestA);
 
<SPAN 
class=576583216-04022004>/* ENABLING NEXT LINE MAKES TestA == TestB == C; WHY??? 
*///DummyProcedure(C);
 
<SPAN 
class=576583216-04022004>/* ENABLING ANY OF NEXT LINES DOESN'T 
*///DummyProcedure2(C);//DummyProcedure(TestA);//DummyProcedure(TestB);//DummyProcedure(MA(C, 
1));//MyClose = C; 
DummyProcedure(MyClose);//DummyProcedure(1);
 
<SPAN 
class=576583216-04022004>/* ENABLING THIS LINE CHANGES ONLY TestA, not TestB 
*///TestA = 50;
 
<SPAN 
class=576583216-04022004>Plot(TestA, "TestA", colorBlue);Plot(TestB, 
"TestB", colorLightBlue, styleHistogram);Plot(C, "C", colorRed, 
styleDots+styleOwnScale);
<SPAN 
class=576583216-04022004>------------------
<BLOCKQUOTE 
>
  First of all it is NOT ALLOWED to assign value of procedure 
  (function with NO 'return' statement) call to a variable. 
  If you want to assign the return value of function call to 
  the variable the function MUST have "return" statement at the 
end.
   
   
  As for the behaviour in question I will 
  need to check this in detail, but in the meantime you can use this simple 
  workaround:
   
  procedure 
  DummyProcedure(array) { local DoNothing;}procedure 
  DummyProcedure2(array) { local DoNothing;} 
   
  TestA = MA(C, 21);TestB = TestA;JunkIgnored = 
  DummyProcedure(TestA);
   
  /* ENABLING NEXT LINE MAKES TestA == TestB == C; WHY??? 
  */JunkIgnored = DummyProcedure(1 * C); // instead of C pass 1 * 
  C
   
   
  (Multiply all 'built-in' arrays by 1 (you can also add 
  zero instead), before passing to the function).
   
  Best regards,Tomasz Janeczkoamibroker.com
  <BLOCKQUOTE dir=ltr 
  >
    ----- Original Message ----- 
    <DIV 
    >From: 
    Dave Merrill 
    
    To: <A title=bugs@xxxxxxxxxxxxx 
    href="">bugs@xxxxxxxxxxxxx 
    Sent: Wednesday, February 04, 2004 3:09 
    PM
    Subject: Procedure/function parameter 
    overwrite issue
    
    Hi Tomasz, I'm writing the bug line 
    about this now, since I'm pretty sure it is a bug, and I have a more 
    specific set of tests to demonstrate the problem.
     
    <SPAN 
    class=767435819-03022004>It appears that when you call<SPAN 
    class=767435819-03022004> any procedure or function with a user array as a 
    parameter, then call the same function again with one of the reserved-name 
    arrays as that same parameter, the user array gets overwritten by the 
    reserved-name array, and so does any other array equal to 
    it. Here's some demo 
    code:----------------------procedure 
    DummyProcedure(array) { local DoNothing;}procedure 
    DummyProcedure2(array) { local DoNothing;}
     
    TestA = MA(C, 21);TestB = TestA;JunkIgnored = 
    DummyProcedure(TestA);
     
    /* ENABLING NEXT LINE MAKES TestA == TestB == C; WHY??? 
    *///JunkIgnored = DummyProcedure(C);
     
    /* ENABLING ANY OF NEXT LINES DOESN'T *///JunkIgnored = 
    DummyProcedure2(C);//JunkIgnored = 
    DummyProcedure(TestA);//JunkIgnored = 
    DummyProcedure(TestB);//JunkIgnored = DummyProcedure(MA(C, 
    1));//MyClose = C; JunkIgnored = 
    DummyProcedure(MyClose);//JunkIgnored = DummyProcedure(1);
     
    /* ENABLING THIS LINE CHANGES ONLY TestA, not TestB *///TestA = 
    50;
     
    Plot(TestA, "TestA", colorBlue);Plot(TestB, "TestB", 
    colorLightBlue, styleHistogram);Plot(C, "C", colorRed, 
    styleDots+styleOwnScale);----------------------First 
    enter this into IB as given 
    above, and look at the chart<SPAN 
    class=767435819-03022004>. Now enable thefirst of the commented 
    out JunkIgnored lines, and notice 
    that TestA and TestB are both now equal to C. 
    Comment that line out again, and enable any of the other commented out 
    JunkIgnored lines; things stay normal. 
     
    As a further curiosity, comment those 
    out again, and enable the TestA = 50 line. It changes only TestA, not TestB. 
    This is in contrast to the JunkIgnored = DummyProcedure(C) line, which 
    changed both TestA and TestB, when neither should have changed.
     
    <SPAN 
    class=767435819-03022004>Hope this is helpful in defining the issue. 
    Please keep me posted on anything you find out, and of course, if it 
    does turn out to be a bug, when a fix is available.
    <FONT 
size=2>Dave


Send BUG REPORTS to bugs@xxxxxxxxxxxxx
Send SUGGESTIONS to suggest@xxxxxxxxxxxxx
-----------------------------------------
Post AmiQuote-related messages ONLY to: amiquote@xxxxxxxxxxxxxxx 
(Web page: http://groups.yahoo.com/group/amiquote/messages/)
--------------------------------------------
Check group FAQ at: http://groups.yahoo.com/group/amibroker/files/groupfaq.html








Yahoo! Groups Sponsor


  ADVERTISEMENT 









Yahoo! Groups Links
To visit your group on the web, go to:http://groups.yahoo.com/group/amibroker/ 
To unsubscribe from this group, send an email to:amibroker-unsubscribe@xxxxxxxxxxxxxxx 
Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.