C# | Tablica trójwymiarowa

0

Witam.
Mój problem dotyczy przesyłania elementów tablic do wyświetlenia na innym wątku. Aktualnie mój kod wygląda mniej więcej tak:

       public void zapis()
        {
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
		         rowcel += dataGridView1.Rows[i].Cells[j].Value.ToString() + "\t";
                }
            }
        }

	public void licznik()
	{
		for (int x = 0; x < iloscTabel; x++)
		{
			zapis();
			rowcel2 += rowcel + "\n";
		}
	}

	public void odczyt()
	{
	    var rowcelTest2 = rowcel2.Split('\n');

		for ( int a = 0; a < iloscTabel; a++) //globalna ilosc tabel ktore wczytuje po kolei do dgv
		{
			var rowcelTest = rowcelTest2[a].Split('\t');

	    		for (int r = 0; r < rowss[a]; r++) //wczesniej grupuje, parsuje i ilosc wierszy podaje prawidlowo - sprawdzone
            		{
                 		for (int c = 0; c < columnss[a]; c++) //j/w ilosc kolumn podaje prawidlowo - sprawdzone
                 		{
		     			   if (c < columns[a] - 1) outp += rowcelTest[c] + " ";
		     			    else outp += rowcelTest[c] + "\n";
                 		}
            		}
		}
	}

Wyniki jednak za każdym obrotem wyświetlają się od początku zamiast "lecieć" po kolei po tabelach.

Dla przykładu. Mam tabele:

Tab1:
kol1 kol2 kol3 kol4
a b c d - wiersze

Tab2:
kol1 kol2 kol3 kol4 kol5
f g h i j - wiersze

Tab3:
kol1 kol2 kol3 kol4 kol5 kol6
l m n o p r - wiersze

I przy powyższym kodzie wyświetla mi cos takiego:

tab1, 1 row, 4 col
a b c d

tab2, 1 row, 5 col
a b c d f

tab3, 1 row, 6 col
a b c d f g

Wiem, że coś ominąłem, ale nie mogę dojść co...

0
for (int c = 0; c < columns[a]; c++) //j/w ilosc kolumn podaje prawidlowo - sprawdzone
                         {
                            if (c < columns - 1) outp += rowcelTest[c] + " ";
                             else outp += rowcelTest[c] + "\n";
                         }
 

ciągle lecisz od kolumny 0 (A).

0

Wybacz, nie dodałem tutaj [a] - w kodzie jest. Już dodane.
Btw. bardzo mi zależy by było to w ten sposób wyświetlane w odczyt(), gdyż będzie mi łatwiej potem na tych danych operować tworząc inserty.

0

Można zamknąć, jeden miły gość mi pomógł dostrzec błąd. Problem leżał w zapisie, który powinien być taki:

       public void zapis()
        {
            for (int i = 0; i < rows; i++)
            {
                for (int j = 0; j < columns; j++)
                {
                    if (c < columns - 1) 
                     rowcel += dataGridView1.Rows[i].Cells[j].Value.ToString() + "\t";
                    else rowcel += dataGridView1.Rows[i].Cells[j].Value.ToString() + "\n";
                }
            }
        }

   public void licznik()
    {
        for (int x = 0; x < iloscTabel; x++)
        {
            zapis();
        }
    }
 
    public void odczyt()
    {
        var rowcelTest2 = rowcel.Split('\n');
 
        for ( int a = 0; a < iloscTabel; a++) //globalna ilosc tabel ktore wczytuje po kolei do dgv
        {
            var rowcelTest = rowcelTest2[a].Split('\t');
 
                for (int r = 0; r < rowss[a]; r++) //wczesniej grupuje, parsuje i jest aktualna il wierszy
                    {
                         for (int c = 0; c < columnss[a]; c++) //j/w dla kolumn
                         {
                            if (c < columnss[a] - 1) outp += rowcelTest[c] + " ";
                             else outp += rowcelTest[c] + "\n";
                         }
                    }
        }
    }

1 użytkowników online, w tym zalogowanych: 0, gości: 1