ghost-in-the-shell
Goto Top

Eingabe in Textbox, direkte Ausgabe eines Textes darunter (Visual Studio 2008 Express)

Hi,
also ich habe das Gefühl, dass mein Anliegen recht einfach ist.

ich möchte eigentlich nur ein kleines Programm welches den eingegebenen Text analysiert und dann das ergebnis direkt nach der eingabe ausgibt, ohne das auf einen button geklickt werden muss.

ich mach es jetzt mal recht einfach:
Die folgende Bedingung soll gelten

1=Eins
2=Zwei
3=Drei
4=Vier
...
9=Neun

wenn man jetzt in der Textbox sagen wir 4357 eingibt, dann soll darunter direkt erscheinen:

4: Vier
3: Drei
5: Fünf
7: Sieben

Ich habe so etwas ähnliches mit excel gemacht mit einer wenn abfrage. das könnte hier ja sicherlich auch gehen.
ich könnte ja sagen wenn das erste Zeichen 1 ist, dann schreibe in zeile 1 : "1:Eins", wenn 2 dann "2:Zwei" usw.
also es soll direkt nach jedem eingegeben Zeichen aktualisiert werden.

Also wer mir da ein bissl helfen könnte, das wäre nett.

würden auch schon links reichen wo es ähnliches gibt.
danke

Content-Key: 86486

Url: https://administrator.de/contentid/86486

Ausgedruckt am: 28.03.2024 um 14:03 Uhr

Mitglied: 22010
22010 27.04.2008 um 11:11:31 Uhr
Goto Top
Hallo,

also wenn du uns jetzt noch die verwendete Programmiersprache nennen würdest, wäre das sehr hilfreich face-wink

MfG
adks
Mitglied: bastla
bastla 27.04.2008 um 11:13:17 Uhr
Goto Top
@22010
Ging mir auch nicht besser - hatte auch nicht darauf geachtet, dass wir hier im Bereich "C und C++" sind und eine VB-Lösung vorgeschlagen ... face-sad

Grüße
bastla
Mitglied: pulse
pulse 27.04.2008 um 11:14:30 Uhr
Goto Top
wie wärs denn mit dem event "OnTextChanged" z.b.?
bzw schau dir generell mal die eigenschaften von objekten wie textboxen und dergleichen an
Mitglied: pulse
pulse 27.04.2008 um 11:52:10 Uhr
Goto Top
//Label auf leer setzen
this->label1->Text = String::Empty;

Collections::Generic::List<String^>^ Nummern = gcnew Collections::Generic::List<String^>();
//Zahlen in eine Liste kloppen
//Bei folgender Einordnung ist der Index = Ziffer
Nummern->Add("Null");  
Nummern->Add("Eins");  
Nummern->Add("Zwei");  
Nummern->Add("Drei");  
Nummern->Add("Vier");  
Nummern->Add("Fünf");  
Nummern->Add("Sechs");  
Nummern->Add("Sieben");  
Nummern->Add("Acht");  
Nummern->Add("Neun");  

//Zahl (String) zeichen für zeichen durchgehen
for each(wchar_t Letter in this->textBox1->Text)
{
 //Überprüfen ob Zeichen eine Ziffer ist
      if(Convert::ToInt32(Letter) < 48 || Convert::ToInt32(Letter) > 57) continue;
 //Zahl mit Wort ausgeben lassen
 //Da ConvertToInt von wchar_t den Asciiwert erzeugt, vorher in String casten
      this->label1->Text += Letter + ": " + Nummern[Convert::ToInt32(Convert::ToString(Letter))];  
 //Zeilenumbuch
      this->label1->Text += "\n";  
}

Das Event ist wie gesagt "OnTextChanged"
Mitglied: 14695
14695 28.05.2008 um 10:41:55 Uhr
Goto Top
Hi!

Soll das alles in unterschiedliche Label? Ich hab das mal in C# geschrieben. Schau es dir mal an... mit

1 x Label label1
1 x TextBox textBox1

Zuerst würde ich mit einer Enumeration arbeiten. Aus dem String in der Textbox lassen sich "Namen" der Enumeratoren in Strings konvertieren:

private enum Zahlen
{ 
   Null = 0, Eins, Zwei, Drei, Vier, Fünf, Sechs, Sieben, Acht, Neun
}

private void textBox1_TextChanged(object sender, EventArgs e)
{
   long n;
            
   if (textBox1.Text.Length > 0 && Int64.TryParse(textBox1.Text, out n))
   {
      label1.Text = n.ToString() + " im Klartext: \n\n";  
      
      int a;
      for (int x = 0; x < textBox1.Text.Length; x++)
      {
         a = Convert.ToInt32(textBox1.Text.Substring(x, 1));
         label1.Text += a.ToString() + ": " + ((Zahlen)a).ToString() + "\n";  
      }
   }
   else
   {
      label1.Text = "Keine Buchstaben, nur Zahlen!";  
      return;
   }
}

Die TryParse-Methode gibt natürich false zurück, wenn der maximale Wert erreicht ist.

Klappt es so?

Grüße aus Köl
OLI