C++, Aplikacja okienkowa - problem.

0

Witam :)
Programowania uczę się od niedawna, zaledwie parę miesięcy oraz od "zera", więc proszę o wyrozumiałość ^^

Piszę aplikację okienkową, mój projekt miał być na temat szyfrowania, lecz napotkałam jeden problem, co przedstawię :

private: Void button1_Click(Object <sup>  sender, EventArgs </sup>  e) {
	array<String <sup> > </sup> str =richTextBox1->Lines; 
	int count = str->Length;   
	for (int i = 0; i<count; ++i) {  
		str[i]=str[i]+3;
	};  

Chciałabym po wciśnięciu buttona1 zaszyfrować (oryginalny szyfr cezara o przesunięciu równym 3, co oczywiście to nie jest poprawnie jeszcze, ale to najmniejszy problem iż mam to już rozpisane kartce ) tekst z wprowadzonego ręcznie/ wczytanego do richTextBox1.
Lecz później chciałabym abym w tym samym richTextBox1 pojawił się zaszyfrowany tekst po wciśnięciu przycisku.
Mam mętlik w głowie :)

1
xjk napisał(a):

Lecz później chciałabym abym w tym samym richTextBox1 pojawił się zaszyfrowany tekst po wciśnięciu przycisku.

Wygląda to na C#. W tym wcieleniu nigdy jeszcze nie napisałem żadnej aplikacji w C#. Ale zgaduję, że
trzeba napisać coś w stylu
richTextBox1->Lines = str;
albo może
richTextBox1->setLines( str )
W każdym razie gdy napiszesz:
richTextBox1->
To edytor powinien wyświetlić listę użytecznych metod i wyszukasz dobrą :)

Zresztą po co ja zgaduję, przecież pisze jak byk:
https://msdn.microsoft.com/pl-pl/library/system.windows.forms.textboxbase.lines%28v=vs.110%29.aspx
[
Pobiera lub ustawia wiersze tekstu w polu tekstowym.
]

Pozdrawiam

2

Po 1. twój kod próbuje zwiększyć referencje do linijek, nie pojedyncze znaki.
Po 2. .NETowy String jest niemutowalny, więc nie możesz zmienić pojedynczych znaków. Powinieneś użyć StringBuildera.
Po 3:

By default, the collection of lines is a read-only copy of the lines in the TextBox. To get a writable collection of lines, use code similar to the following: textBox1.Lines = new string[] { "abcd" };

https://msdn.microsoft.com/en-us/library/system.windows.forms.textboxbase.lines(v=vs.110).aspx?cs-save-lang=1&cs-lang=cpp
Potrzebujesz więc utworzyć nową tablicę Stringów, z każdego Stringa z tablicy pierwotnej zrobić StringBuilder, potem zaszyfrować i zapisać do nowej tablicy, ostatecznie przypisać nową tablicę do Lines.

0

@mad_penguin tak jak napisał @fasadin, to nie c#

Co do wątku to nie widzę problemu. Umiesz pobrać tekst z okienka, ale nie umiesz ustawić?</del>

1

No cóż, pomyślę nad tym programem w czasie bardziej wolnym ^^.
Zmieniłam program (jak to na kobietę przystało) na bezsensowny obliczający długość linii w danym tekście oraz ile posiada znaków : D
Wkleję kod, jakby ktoś miał jakiś w przyszłości problem. Dziękuję za pomoc, chęci :)
[...]
#pragma endregion
private: Void button1_Click(Object sender, EventArgs e) {
array<String> str =richTextBox1->Lines;
int count = str->Length;
MessageBox::Show(Convert::ToString(count), "Liczba linii.",MessageBoxButtons::OK);
}
Void button2_Click(System::Object sender,EventArgs e) {
String^ str = richTextBox1->Text;
int count = str->Length;
int c;
for (int i = 0; i<count; ++i) {
c++;
};
MessageBox::Show(Convert::ToString(c), "Liczba znaków");

}

[...]
//To jest oczywiście cpp

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