Odczytanie znaku z textBox

Odczytanie znaku z textBox
FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

Witam
Mam takie pytanie, jak odnieść się do dowolnego znaku zapisane w textBox/richTextBox. Wydaje mi się, że powinienem jakoś to powiązać z tym, że jest to tablica char, ale to tylko moje przypuszczenie.
I drugie powiązane z tym zagadnienie - jak podmieniać pojedyncze znaki?
Chodzi mi o Visual C++

Pozdrawiam
Piotrek

PS: Nie daje kodu, bo i tek nie działa.

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
0

Tekst w TextBox jest zapisany jako string, jak i również w RichTextBox też. string to zbiór char'ów i odwołujesz się do nich jak do tablicy operatorem []. Przykład:

Kopiuj
textBox1.Text[49]; // odwołanie się do 50. znaku w tekście

Do operacji na string'ach służy StringBuilder.

FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Kopiuj
label1->Text=textBox1->Text;
label2->Text=textBox1->Text[1];

No więc coś takiego miałem (wnioski moje z C++ strukturalnego), ale nie działa. A wstawienie kropki wyrzuca błąd i pyta czy miałem na myśli "->"...

xeo545x39
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kosmos
  • Postów: 1571
1

Acha Więc to C++, ale to dużo nie zmienia i tak piszesz pod .NET'a. Jak chcesz przypisać jakąś literę to:

Kopiuj
label1->Text = textBox1->Text[0]; // przypisuje pierwszy znak

Jak chcesz manipulować dowolnie tekstem, to użyj klasy StringBuilder. Tam się odwołujesz i zmieniasz poszczególne znaki jak w string'ach z czystego C++:

Kopiuj
StringBuilder^ sb = gcnew StringBuilder(textBox1.Text);

sb[0] = 'a'; // zmienia pierwszy znak na 'a'
FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0

No niby fajnie, ale to nie działa...

Skopiowałem tą linię i mam taki fragment kodu:

Kopiuj
	private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
				 label1->Text=textBox1->Text;
				 label1->Text = textBox1->Text[0];
			 } 

A wyrzuca następujący błąd:
''cannot convert parameter 1 from 'wchar_t' to 'System::String ^'
1> No user-defined-conversion operator available, or
1> No standard conversion exists from the boxed form of the arithmetic type to the target type''

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
 label1->Text = textBox1->Text[0];

no bo to jest próba przypisania do Stringa pojedynczego znaku wchar_t.

Kopiuj
label1->Text = textBox1->Text.Substring(0,1);
FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Kopiuj
label1->Text=textBox1->Text[0].ToString();
  • jakby ktoś szukał to działa taki zapis

W końcu się udało.
Bardzo dziękuję za pomoc :)

Chyba do zamknięcia.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Szukam od 40 minut funkcji na zmianę String na Integer? Znalazłem Asc, AscW, atoi ToInteger(), ale nic nie chce działać. Ewentualnie gdzie dodać biblioteki do tego.

Daleko wcale nie trzeba szukać:
http://msdn.microsoft.com/en-us/library/system.convert.aspx#Y80
http://msdn.microsoft.com/en-us/library/system.int32.aspx

FR
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 40
0
Kopiuj
System::Int32 x=textBox1->Text.ToInt32(); 

albo

Kopiuj
 System::Int32 x=ToInt32(textBox1->Text);

Ale żaden z tych zapisów nie pozwala mi odpalić programu.

Sarrus
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 2512
0

Zastanów się nad sobą. Klasa Convert ma statyczną metodę ToInt32, a nie System::String
W Managed C++ nie pisałem. Domyślam się, że to będzie jakoś tak:

Kopiuj
Convert::ToInt32(textBox1->Text);

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.