[Mono-dev] Arrays in a loop?
Martin Hinks
mhinks at gmail.com
Mon Oct 3 15:24:36 EDT 2005
Very simple answer:
1 of the data types it is trying to load in is not a Single!
Put each statement inside a try-catch block and it should all work -
set default to 0 or check your data if you didn't expect this.
Martin
On 10/3/05, SigmaX <scottclansman at cwazy.co.uk> wrote:
> Martin Hinks wrote:
> >Hi Eric,
> >
> >First off, why are you enclosing the array name in curly braces?
> >MyArray[i, 0] should do the trick...
> >
> Heh; I meant to imply that that was just an example array name. I
> should have just left them out of the example, as they were unnecessary.
> >Secondly, how is your array defined? Have you checked that the
> >exception thrown isn't an "Out of range exception"? If it IS an
> >out-of-range exception you need to declare your array differently, if
> >not, post the declaration as well and i'll try to help more.
> >
> >Thanks,
> >
> >Martin Hinks
> >
> Thanx for your time.
>
> It seems the problem was not, as I first supposed, directly related to
> the array. Actually the example I gave compiles fine... but it wasn't
> exactly what I was doing :-P.
>
> The actual loop is as follows:
>
> foreach ( DataTable table in loaded_chart.Tables )
> {
> // Repeat for each row in the table.
> int i = 0;
>
> foreach ( DataRow row in table.Rows )
> {
> lms_table[i, 0] =
> Convert.ToSingle(row[keytext]);
> lms_table[i, 1] = Convert.ToSingle(row["L"]);
> lms_table[i, 2] = Convert.ToSingle(row["M"]);
> lms_table[i, 3] = Convert.ToSingle(row["S"]);
> Console.WriteLine("Round {0}, Key = {1}, L = {2}, M = {3}, S = {4}",
> i, lms_table[i, 0], lms_table[i, 1], lms_table[i, 2], lms_table[i, 3]);
>
> i ++;
> }
> }
>
>
> The exception I get is:
>
> Unhandled Exception: System.InvalidCastException: Cannot cast from
> source type to destination type.
> in <0x0001d> System.DBNull:System.IConvertible.ToSingle
> (IFormatProvider provider)
> in <0x00086> System.Convert:ToSingle (System.Object value,
> IFormatProvider provider)
> in <0x00016> System.Convert:ToSingle (System.Object value)
> in <0x00277> CDurry.coredurry:lms_load (System.String chart, Int32
> gender)
> in <0x0024a> consdurry:Main ()
>
> The weird thing is that it executes once flawlessly, giving me the
> first row of the dataset printed on the screen; the exception is thrown
> the second time around.
> The array is declared at the first line of the class as:
>
> static float[,] lms_table = new float[1000, 4];
>
> Any help?
> Thanx again,
> SigmaX
>
> >On 10/3/05, Eric Scott <scottishbug at cwazy.co.uk> wrote:
> >
> >> I have a newbie C# question that I've been having difficulties
> >>finding an answer to. I have a global array, and am trying to assign
> >>data to it from as follows:
> >>
> >> int i = 0;
> >>
> >> foreach ( DataRow row in table.Rows )
> >> {
> >> {MyArray}[i, 0] = a;
> >> {MyArray}[i, 1] = x;
> >> {MyArray}[i, 2] = y;
> >> {MyArray}[i, 3] = z;
> >>
> >> i ++;
> >> }
> >>
> >> All the code executes properly once, but then stalls the second time
> >>it attempts to go through the loop. I've gathered there's something
> >>quarky about using arrays in a loop like this, but I haven't found any
> >>down-to-earth explanations that let me know how to fix my code.
> >> Thanx for any help you can offer,
> >> SigmaX
> >>
> >>--
> >>My home page: www.sigmax.cjb.net
> >>
> >>"Education is what remains after one has forgotten everything he learned in school"
> >> -Albert Einstein
> >>
> >>
> >>_______________________________________________
> >>Mono-devel-list mailing list
> >>Mono-devel-list at lists.ximian.com
> >>http://lists.ximian.com/mailman/listinfo/mono-devel-list
> >>
> >>
> >
> >
> >--
> >Martin Hinks
> >http://www.m-s-d.net
> >
> >
>
>
> --
> My home page: www.sigmax.cjb.net
>
> "Education is what remains after one has forgotten everything he learned in school"
> -Albert Einstein
>
>
>
--
Martin Hinks
http://www.m-s-d.net
More information about the Mono-devel-list
mailing list