C# VS2013 Sczytywanie części richtextboxa do zmiennych

C# VS2013 Sczytywanie części richtextboxa do zmiennych
  • Rejestracja: dni
  • Ostatnio: dni
0

Mam taką oto klasę:

Kopiuj
 
public class moja klasa
        {
            public int r;
            public int g;
            public int b;
        }

W richtextboksie znajdują się linijki textu w taki oto formacie.

Kopiuj
richTextBox1.Text = richTextBox1.Text + Convert.ToString("X: " + i + " , Y: " + j + " , R: " + tab[i, j].r + " , G: " + tab[i, j].g + " , B: " + tab[i, j].b + "\r\n");

Każda z tych zmiennych jest intem od 0 do 255, jeśli ma to jakieś znaczenie.

Teraz moje pytanie, stworzę sobie

Kopiuj
mojaklasa[,] tab = new mojaklasa[32,32] 

Jak do pól r, g i b tej klasy sczytać wartości z tego textboxa, które znajdują się po R: G: i B:?

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

Wyrażenia regularne lub przeszukać tekst używając metod wbudowanych w Stringa.
A nie możesz tworzyć tej klasy od razu przy dodawaniu tekstu do RichTextBoxa?
I nazwy klas piszemy z dużej litery.

  • Rejestracja: dni
  • Ostatnio: dni
0

Może źle wytłumaczyłem.

Program działa tak, że mamy obrazek 32x32. Otwieramy go, wkładamy do pictureBox, a w richTextBox pod spodem pojawia się tekst w takim formacie:

X: 0, Y: 0, R:0, G: 0, B: 0

Mam opcję zapisania tego do pliku txt.

To działa.

Teraz co chcę zrobić.

Do nowego richTextBox wczytuję plik txt w takim formacie. Chcę teraz z tego nowego richTextBox stworzyć taki właśnie tab[32,32] którego wartości odpowiadają temu co jest w tym nowym.

Czyli np jeśli w rtb jest linijka:

X: 2, Y: 14, R:3, G: 5, B: 10

To chcę, żeby tab[2,14].r = 3, tab[2,14].g = 5, tab[2,14].b = 10

Czy to coś rozjaśnia, dopiero zaczynam przygodę z VS, może coś nie tak tłumaczę.

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0

Więc tak jak napisałem: Wyrażenia regularne lub przeszukać tekst używając metod wbudowanych w Stringa.

  • Rejestracja: dni
  • Ostatnio: dni
0
dam1an napisał(a):

Więc tak jak napisałem: Wyrażenia regularne lub przeszukać tekst używając metod wbudowanych w Stringa.

http://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx

Czy to jest to o czym mam poczytać?

fourfour
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 627
0

Linia po linii dzielisz od przecinka do przecinka, potem dla każdego stringa sprawdzasz jaka jest pierwsza literka, potem od trzeciej literki konwertujesz do inta i wstawiasz w końcu do swojej tablicy w miejscach X i Y, odczytanych tak samo.

dam1an
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Warszawa
  • Postów: 1589
0
NagashTDN napisał(a):
dam1an napisał(a):

Więc tak jak napisałem: Wyrażenia regularne lub przeszukać tekst używając metod wbudowanych w Stringa.

http://msdn.microsoft.com/en-us/library/system.string.split(v=vs.110).aspx

Czy to jest to o czym mam poczytać?

Proponował bym to http://codeguru.geekclub.pl/baza-wiedzy/wstep-do-wyrazen-regularnych-na-platformie-net,2375
Tylko raz dotąd musiałem korzystać z wyrażeń regularnych więc nie bardzo je ogarniam. I postanowiłem podszkolić się na twoim przykładzie:

Kopiuj
 
            MatchCollection mc = Regex.Matches("X: 2, Y: 14, R: 3, G: 5, B: 10",
                "[0-9]+");
            foreach(Match str in mc)
                Console.WriteLine(str);
            Console.Read();
szogun1987
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Lublin/Gdynia
0

Musisz też wziąć pod uwagę że to co będzie w RichTextBox nie koniecznie będzie poprawnie sformatowane. I potwierdzam, że jeżeli chcesz operować na tekście to dla prostych i średnio-trudnych składni Regex będzie najodpowiedniejszy dla bardziej złożonych będziesz musiał pobawić się w tokenizowanie napisu.
Ale mam pytanie czy musisz to wyswietlać w RichTextBoxie? Może lepiej mieć wiele kontrolek a ich treść wrzucić potem do xml-a? który znacznie łatwiej potem interpretować?

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.