fbpx
Welcome, Guest
Username: Password: Remember me
  • Page:
  • 1

TOPIC: FOR NEX issue

FOR NEX issue 6 months 2 weeks ago #1

  • boonnam
  • boonnam's Avatar Topic Author
  • Offline
  • Posts: 34
m_dibs is private variable:

C#
private System.IntPtr[] m_dibs;

or

X#
private m_dibs as IntPtr[]

In the constructor for the class:

m_dibs = new System.IntPtr[0];

or

m_dibs := IntPtr[]{0}

Here is my C# sample code:
//int x = m_dibs.Length;

for (int i = 0; i < m_dibs.Length; i++)
{
      EZTwain.DIB_Free(m_dibs[i]);
}

Here is my X# translation:
x := self:m_dibs.Length
            
for i := 0 upto self:m_dibs.Length
     EZTwain.DIB_Free(self:m_dibs[i])
next

In the C#, since the length is 0 when the class is first instantiated, the code inside the for next loop doesn't run. But in the X#, the line inside the for next loop get executed, which resulted in index out of range error. I also use "to" instead of "upto".

I know I can prevent this by first checking if the length is > 0 before running the for next loop or perhaps initialize i := 1.

I am using Core dialect. "Use Zero Base Arrays" is false at first. I also tried setting to true. Same result.

Is there a similar code for X#?. I thought the index in Core dialect is zero base like C#.


Thanks,
Boonnam

Please Log in or Create an account to join the conversation.

FOR NEX issue 6 months 2 weeks ago #2

Hi Boonam,

Are you using zero-based arrays in X#? If yes, then your iteration should be upto length - 1:
for i := 0 upto self:m_dibs.Length - 1

If you think about it, it's the same tha c# does, with the "i < m_dibs.Length" segment in the for command. It uses "<", not "<=", so "i" never reaches "m_dibs.Length".

With the above correction, the loop will not execute at all also in X# for an empty array.

If you're not using zero-based arrays, then (unlike in c# which does not support 1-based array indexing) you'd need to start the loop from element "1":
for i := 1 upto self:m_dibs.Length

In both cases, the result will now be the expected one.

Chris
XSharp Development Team
chris(at)xsharp.eu

Please Log in or Create an account to join the conversation.

FOR NEX issue 6 months 2 weeks ago #3

  • boonnam
  • boonnam's Avatar Topic Author
  • Offline
  • Posts: 34
Thank you very much!

Please Log in or Create an account to join the conversation.

  • Page:
  • 1