Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C++CLI / VB .Net / .Net-Framework » Zufällige Ausgabe einer textBox-Zeile in einem Label

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
04.11.2011, 09:09 Uhr
CosmoCortney



Hallo,
bin noch ziemlicher Anfänger und grübel schon seit langem an diesen Problen.
Das Programm an dem ich momentan arbeite soll dienen um Vokabeln zu lernen.
Aber nicht nur das, sondern auch für Japanische Schriftzeichen (lerne japanisch und portugiesisch).
In dem programm befinden sich 3 textBoxen (2 davon multiline) und buttons um die erste vokabel, die nächste vokabel zu generieren usw.
Hatte geplant es so zu machen, dass ich in die erste multiline textbox die deutschen wörter ein kopiere, die mittels zeilen umbruch von ein ander getrennt sind. das selbe gilt für die dazugehörige Vokabel in der anderen multiline textbox.
Nun wenn ich bei dem programm auf "start" clicke, dann werden die beiden multiline textBoxen unsichtbar und eine weitere text box, ein reset, einer "weiter", ein "cheat" und buttons um spezielle buchstaben wie ç eingeben zu können. Der start button wird dann unsichtbar.
das ist von Nöten, damit man nicht schummeln kann.

Nur beim Clicken auf "start" soll aber auch schon die erste vokabel generiert werden.
Das zu übersetzende Wort soll in label1 wiedergegeben werden. Die dazu gehörige Lösung in einem unsichtbaren Label (label3) (brauche das für den "cheat" Button, um später den Text, also die Lösung in den unsichtbaren Label bei Bedarf in die texBox (textBox1) zu kopieren. Ich weiß, dass es effizientere Wege gibt um das zu machen, aber es wäre für mich so leichter zu verstehen)
Nun soll der weiter Button die neue Vokabel generieren.
Wie kann ich dies anstellen?
Danke schonmal im Voraus



Code zu Button2 (Start-Button) (der rote Bereich ist der Problembereich):



C++:

private: System::Void button2_Click(System::Object^  sender, System::EventArgs^  e) {

            this->textBox1->Enabled = true;
            this->textBox3->Enabled = false;
            this->textBox2->Enabled = false;
            this->textBox1->Visible = true;
            this->textBox2->Visible = false;
            this->textBox3->Visible = false;
            this->button1->Enabled = true;
            this->button1->Visible = true;
            this->button3->Enabled = true;
            this->button3->Visible = true;
            this->button2->Enabled = false;
            this->button2->Visible = false;
            this->button4->Visible = true;
            this->button5->Visible = true;
            this->button6->Visible = true;
            this->button7->Visible = true;
            this->button8->Visible = true;
            this->button9->Visible = true;
            this->button10->Visible = true;
            this->button11->Visible = true;
            this->button4->Enabled = true;
            this->button5->Enabled = true;
            this->button6->Enabled = true;
            this->button7->Enabled = true;
            this->button8->Enabled = true;
            this->button9->Enabled = true;
            this->button10->Enabled = true;
            this->button11->Enabled = true;
            this->button12->Enabled = true;
            this->button12->Visible = true;
            [color="#DA0000"]{
            
            label1->Text = textBox3->Lines[zz->Next(0)];
                Random ^zz = gcnew Random();
            }[/color]
         }


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
04.11.2011, 13:39 Uhr
Tommix



Hallo,
C++/cli ist eine zum Programmieren von Windows-Forms-Applikationen denkbar ungeeignete Sprache, erst recht für Anfänger. Wenn Du bei der .NET-Geschichte bleiben willst, solltest Du unbedingt mal einen Blick auf C# werfen.
Ich bin nun stark im Zweifel, ob ich Dein Problem richtig verstanden habe, aber

C++:
Random.Next(0);


gibt immer 0 zurück:

Zitat von MSDN:

Random.Next Method (Int32)

Returns a nonnegative random number less than the specified maximum.



Du müsstest also statt Null die Anzahl der Vokabeln angeben, also textBox3->Lines->Count (oder war's Length?).

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
04.11.2011, 14:58 Uhr
CosmoCortney



okay, danke schonmal für die Antwort.
Ich wollte mich eigentlich erstmal nur mit C++ auseinander setzen. Habe damit bereits angefangen und wollte nicht unbedingt noch eine weitere Programmiersprache lernen.
Also nun sagt der Compiler, das 'Count' bzw. 'Lengh' keine Elemente von 'System::Array sind.

LG
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.11.2011, 15:06 Uhr
CosmoCortney



Entschuldigung, habe einen Tipp fehler gemacht, deshalb die Fehlermeldung. Also nun sieht es so aus:


C++:

Random(textBox3->Lines->Length);
label1->Text = textBox3->???????





Ist das so richtig?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
04.11.2011, 15:24 Uhr
ao

(Operator)



Zitat von CosmoCortney:
Ich wollte mich eigentlich erstmal nur mit C++ auseinander setzen. Habe damit bereits angefangen und wollte nicht unbedingt noch eine weitere Programmiersprache lernen.

Was du da lernst, ist C++/CLI. Das ist nicht wirklich C++, sondern ein ziemlicher Krampf, der erfunden wurde, um Leuten, die nur C++ kennen und nicht umdenken wollen / können, das Weiterleben in der .NET-Welt zu ermöglichen.

Es ist wirklich besser, C# zu lernen, wenn man für .NET programmieren will. Oder aber richtiges C++, um es außerhalb von .NET einzusetzen.

Meiner Meinung nach ist es für dich noch nicht zu spät für so eine Korrektur. Aber das musst du selber wissen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
04.11.2011, 17:31 Uhr
CosmoCortney



Das verstehe ich, ich lerne ja auch C++ für die Windows Programmierung.
Aber habe auch interesse C++/cli zu lernen.
Werde aber mich aber im laufe des Tages auch mal über C# informieren.
aber könntet Ihr mir sagen, wie ich das Programm dennoch fortsetzen kann?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
04.11.2011, 17:51 Uhr
Tommix



Naja,

C++:
label1->Text = textBox3->Lines[zz->Next(textBox3->Lines->Length)];


würde ich denken.

Gruß, Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
04.11.2011, 21:30 Uhr
CosmoCortney



vielen Dank

aber immer wenn ich das Programm neu starte, oder die nächste Vokabel einblenden lassen will, erscheint immer die selbe Vokabel in label1.
Der Code sieht momentan so aus:


C++:

Random ^zz = gcnew Random(textBox3->Lines->Length);
label1->Text = textBox3->Lines[zz->Next(textBox3->Lines->Length)];


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
05.11.2011, 01:48 Uhr
Lensflare



Hi CosmoCortney


Code:
gcnew Random(int)

das ist der konstruktor für das "Random" objekt, das später dafür verwendet wird, um mehrere zufallszahlen zu erzeugen. so ein objekt legt man meistens nur ein mal an. irgendwo beim start des programms.
Der konstruktor mit dem int parameter erzeugt das Random objekt mit einem bestimmten seed wert, in deinem fall immer mit dem gleichen. deswegen kommt bei dir immer die gleiche kette von zufallszahlen. verwende einfach den konstruktor ohne parameter, dann wird automatisch ein seed wert genommen, der von der aktuellen zeit abhängt.

also kurz:

Code:
Random ^zz = gcnew Random(); //einmalig am anfang des programms

label1->Text = textBox3->Lines[zz->Next(textBox3->Lines->Length)];
label2->Text = textBox4->Lines[zz->Next(textBox4->Lines->Length)];
label3->Text = textBox5->Lines[zz->Next(textBox5->Lines->Length)];



für mehr infos über Random, siehe hier:
http://msdn.microsoft.com/en-us/library/system.random.aspx
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 05.11.2011 um 01:57 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
05.11.2011, 08:23 Uhr
CosmoCortney



Achso, verstehe.
Danke! Und danke für den Link.

Nun bekomme ich eine Fehlermeldung:

Es fehlt ';' vor '^'

Also habe ich versucht die Zeile

Random ^zz = gcnew Random();

vor

label1->Text = textBox3->Lines[zz->Next(textBox3->Lines->Length)];

zu setzen. Das hat funktioniert.

Aber bei dem "Weiter" -Button (button1) tritt nun folgendes problem auf.
Undzwar wird nicht die dazu gehörige Vokabel, sondern eine ganz andere in label3 wiedergegeben.

Ist es vielleicht möglich, die Vokabeln in einer textBox unterzubringen?
Das diese dann durch ein Symbol getrennt und der Text links von dem Symbol in label1 und rechts vom Symbol in label3 wiedergegeben wird?

der Inhalt der TextBox würde dann so aussehen:

Katze#gato
Haus#casa
blau#azul
...


Random ^zz = gcnew Random();
label1->Text = textBox3->Lines[zz->Next(textBox3->Lines->Length)];
und weiter?
muss ich nun mit String Trim() arbeiten?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C++CLI / VB .Net / .Net-Framework ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: