Re: expected array behaviour

2009-01-02 Thread John Reimer
Hello Anders, John Reimer wrote: You'd get a runtime error if you were using Linux. For some reason string literals are not read-only, or Windows doesn't respect it, or something like that. Modifying either array1 or array2 is technically illegal. So, uh, don't do it. Yes, that's one adva

Re: expected array behaviour

2009-01-02 Thread Stewart Gordon
Mike James wrote: const char[26] array1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[26] array2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; It doesn't occur. Is this expected behaviour? Yes. Static arrays have value semantics, unlike dynamic arrays, which have reference semantics. Stewart.

Re: expected array behaviour

2009-01-02 Thread Anders F Björklund
John Reimer wrote: You'd get a runtime error if you were using Linux. For some reason string literals are not read-only, or Windows doesn't respect it, or something like that. Modifying either array1 or array2 is technically illegal. So, uh, don't do it. Yes, that's one advantage to Linux.

Re: expected array behaviour

2009-01-01 Thread John Reimer
Hello Jarrett, On Thu, Jan 1, 2009 at 5:55 PM, Mike James wrote: I have a function that uses 2 array strings defined similar to this... const char[] array1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] array2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; If I make a change to a char in array1 it also changes t

Re: expected array behaviour

2009-01-01 Thread John Reimer
Hello Jarrett, If you want to modify the contents of string literals, like you're doing here, put a .dup on them. char[] array1 = "ABCD".dup; Again, modifying the contents of string literals is illegal and the results are undefined. Oh, right. I missed that. -JJR

Re: expected array behaviour

2009-01-01 Thread Jarrett Billingsley
On Thu, Jan 1, 2009 at 7:10 PM, Mike James wrote: > Got it - so I should do this... > > const char[] array1= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; > char[] array2 = new char[array1.length]; Just "char[] array2 = array1.dup;" .dup duplicates the array by creating a new array the same length and copying

Re: expected array behaviour

2009-01-01 Thread Mike James
Got it - so I should do this... const char[] array1= "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] array2 = new char[array1.length]; and then copy the contents of array1 into array2. Regards, -=mike=-

Re: expected array behaviour

2009-01-01 Thread Jarrett Billingsley
On Thu, Jan 1, 2009 at 6:56 PM, Mike James wrote: > Hi John, > > I am using D1.038, dsss and Tango. > > I've written a quick example but this one is even stranger... > > > > module main; > > import tango.io.Stdout; > > int main() { >func1(); >func2(

Re: expected array behaviour

2009-01-01 Thread Mike James
Forgot to mention - Windows XP. Regards, -=mike=-

Re: expected array behaviour

2009-01-01 Thread Mike James
Hi John, I am using D1.038, dsss and Tango. I've written a quick example but this one is even stranger... module main; import tango.io.Stdout; int main() { func1(); func2(); return 0; } void func1() { char[] array1 = "ABCD"; char[

Re: expected array behaviour

2009-01-01 Thread Jarrett Billingsley
On Thu, Jan 1, 2009 at 5:55 PM, Mike James wrote: > I have a function that uses 2 array strings defined similar to this... > > const char[] array1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; > char[] array2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; > > If I make a change to a char in array1 it also changes the same in

Re: expected array behaviour

2009-01-01 Thread John Reimer
Hello Mike, I have a function that uses 2 array strings defined similar to this... const char[] array1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; char[] array2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; If I make a change to a char in array1 it also changes the same in array2. But if I define the arrays as follows