www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - arrays

reply tytower <tytower yahoo.com> writes:
[code]
this() {
	char[][] data ;

	char[] dataNumber = "1";
	char[] date = "10/12/08" ;
	char[] m_details = "test";
	char[] m_code = "340" ;

	char[] m_debit = "3480.00"; 
	char[] m_credit;

	data[0]= dataNumber;
	data[1]= date ;
	data[2]= m_details;
	data[3][ m_code;
	data[4]= m_debit;
	data[5][ m_credit;
[/code]
Compiles OK but gives error 
[code]
"tango.core.Exception.ArrayBoundsException transaction(56): Array index out of
bounds"[/code]
Jan 28 2008
next sibling parent BCS <ao pathlink.com> writes:
Reply to tytower,

 [code]
 this() {
 char[][] data ;
 char[] dataNumber = "1";
 char[] date = "10/12/08" ;
 char[] m_details = "test";
 char[] m_code = "340" ;
 char[] m_debit = "3480.00";
 char[] m_credit;

data.length = 6;
 data[0]= dataNumber;
 data[1]= date ;
 data[2]= m_details;
 data[3][ m_code;
 data[4]= m_debit;
 data[5][ m_credit;
 [/code]
 Compiles OK but gives error
 [code]
 "tango.core.Exception.ArrayBoundsException transaction(56): Array
 index out of bounds"[/code]

untill you say otherwise a dynamic array has size zero.
Jan 28 2008
prev sibling parent torhu <no spam.invalid> writes:
tytower wrote:
 [code]
 this() {
 	char[][] data ;
 
 	char[] dataNumber = "1";
 	char[] date = "10/12/08" ;
 	char[] m_details = "test";
 	char[] m_code = "340" ;
 
 	char[] m_debit = "3480.00"; 
 	char[] m_credit;
 
 	data[0]= dataNumber;
 	data[1]= date ;
 	data[2]= m_details;
 	data[3][ m_code;
 	data[4]= m_debit;
 	data[5][ m_credit;
 [/code]
 Compiles OK but gives error 
 [code]
 "tango.core.Exception.ArrayBoundsException transaction(56): Array index out of
bounds"[/code]
 

'char[][] data;' doesn't allocate anything but an array reference. So it's just an empty array to begin with. If you print its length, you'll see that it's '0'. Use the append operator instead: data ~= dataNumber; data ~= data; etc.
Jan 28 2008