# Mehrere Textboxen miteinander vergleichen (VB.net)



## RC-X (4. Mai 2011)

Hallo zusammen,

Ich bin noch ganz firsch was VB.net angeht, sprich ich  bin sehr eingeschränkt was die Umsetzung meines Wissens angeht.

Nun ja, ich stehe vor einem, wahrscheinlich lächerlich kleinem, Problem.
Ich möchte die Inhalte mehrer Textboxen miteinander vergleichen, bloß ich hab keine Ahnung wie das genau anstellen soll.

Ich habe 5 txtboxen und will deren Inhalte auf eine möglichste  komfortable Art vergleichen (Aktion soll durch Button ausgelöst werden),   die TxtBox mit dem größten Wert soll dann über eine Msgbox ausgegeben  werden.

Ich hätte mit _If-Vergleichen _angefangen und _Do Until_....
Aber ich weiß nicht wie ich ausdrücken soll, dass größte Wert, der 5 txtboxen, das Ergebnis ist...

Ich hoffe ihr könnt einem angehenden Systemintegrator helfen http://entwickler-forum.de/images/smilies/wink.gif

Schonmal *DANKE**  *und viele Grüße

Flo

PS: Ich nutze Visual Studio 2010 Ultimate


----------



## fadade (4. Mai 2011)

in Visual Studio musst du dann einfach nur das event für  button_click() erzeugen (lassen (per doppelklick auf den button)) und  dann dort z.B. einen Text.Box-Text in einer int-Variablen speichern*.  tjo und danach kannst du ja vergleichen, ob der nächste text größer ist,  als der bisher vorhandene und in dem fall wird der wert dann einfach  überschrieben...


*z.B.(!) so

```
int zahl = (int) deinetextbox.Text;
//wenn du dich mit arrays auskennst, würd ich dir die ans Herz legen und die werte darin immer mit einer
//update-methode neu schreiben lassen. vorteil ist, dass du dann immer diese zahlen/werte
//sofort abrufbereit hast
```
ich weiß nur nicht mehr, ob man bei VB.NET auch diese Semikolons/semikola verwenden muss 
aber ich weiß nicht, ob das mitm Autoboxing so in VB ist

ich habs grad mal so gemacht (bidde schlaget mich nicht für die Vorgehensweise )

```
private void button1_Click(object sender, EventArgs e)
        {
            int[] arr = new int[5]; //array erstellen
            arr[0] = Convert.ToInt32(textBox1.Text); //werte ins array schreiben
            arr[1] = Convert.ToInt32(textBox2.Text);
            arr[2] = Convert.ToInt32(textBox3.Text);
            arr[3] = Convert.ToInt32(textBox4.Text);
            arr[4] = Convert.ToInt32(textBox5.Text);
            int groesste = 0;
            for (int i = 0; i < arr.Length; i++) //array nach größtem wert durchsuchen und in "groesste" speichern
            {
                if (arr[i] > groesste)
                    groesste = arr[i];
            }
            MessageBox.Show("größte ist: " + groesste); // tjaa... was passiert hier wohl :D
        }
```
das ist jetzt nicht sehr dynamisch, aber sollte deine aufgabe erfüllen... du musst aber aufpassen, da Int32-Werte maximal ~32.000 groß sein können!


----------



## RC-X (4. Mai 2011)

Kranke Sache...
Aber ich denke ich habe es ungefähr verstanden, vom aufbau zumindest, aber ganz durchblicken tu ich leider nicht, sry 

Ich kann dir aber sagen, dass es keine Semikolon/Semikola so gibt


----------



## fadade (4. Mai 2011)

hey,
also so krank ist das gar nicht 
Im grunde ist es hier wichtig, dass du alle vorhandenen Daten erstmal irgendwie zusammenschaffst (dazu halt eben das Array, oder eine virtuelle Tabelle, wenn dir das weiterhilft) und dann kannst du mit den Daten auch flexibel weiterarbeiten. "do until" hättest du da auch benutzen können ... wenn du dafür noch einen Entwurf haben möchtest, kann ich dir auch mal einen basteln (Allerdings mache ich das mit C#, ist also ggf. nicht komplett kompatibel mit VB)

nur mit Arrays würde ich mich als "Systemintegrator" schon auseinandersetzen 
Ich bin ja auch gerade erst in der Lernphase, aber wenn du noch mehr fragen hast, immer her damit, ich will LERNEEEEN 
(nächstes Mal werde ich die Lösung dann auch nicht so direkt hinschreiben, damit der Lerneffekt auch auf die anderen Personen übergreift  )


PS: was macht man eigentlich so als Systemintegrator? oder als "angehedner"? so langsam sollte ich mich ja auchmal mit dem Thema Beruf auseinadnersetzen ...


----------



## Supeq (5. Mai 2011)

Der Spaß geht auch nen bischen eleganter, mit einer Liste.

Dazu einfach alle Werte der Textboxen einer Liste hinzufügen, und anschliessend mit der Max() Methode der List-Class den Höchstwert bestimmen und weiterverarbeiten.
Mache leider (oder zum Glück ) kein VB, aber in C#.net könnte das z.B. so aussehen:


```
List<int> MyList = new List<int> { Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox3.Text) };
textBox4.Text = Convert.ToString(MyList.Max());
```


----------



## fadade (5. Mai 2011)

Supeq schrieb:


> ```
> List<int> MyList = new List<int> { Convert.ToInt32(textBox1.Text), Convert.ToInt32(textBox2.Text), Convert.ToInt32(textBox3.Text) };
> textBox4.Text = Convert.ToString(MyList.Max());
> ```


 
heyho, 
nice Code 
gibts das mit der Max-Methode auch für arrays?
und mal ne frage zu der letzten Anweisung .... ich hätte das jetzt mit 

```
textBox4.Text = "" + MyList.Max(); //in den anführungszeichen kann(!) auch text stehen ...
```
gemacht. 
wieso verwendest du da *Convert.ToString()*? (ist jetz nicht bös gemeint oder so   )


----------



## Supeq (5. Mai 2011)

Naja ich hab halt Convert.ToString benutzt um auf Nummer sicher zu gehen. 
Falls es so ist wie du schreibst, das der MyList.Max()-Wert implizit in einen String umgewandelt wird, wenn du ihn mit "" und + verbindest, dann ist das zwar praktisch, aber unschön 

Für die Arrays gibt es so direkt keine Max() Methode, jedoch für die ArrayList, falls dir das weiterhilft!


----------



## RC-X (5. Mai 2011)

@Fadade:
Ich lerne Fachinformatiker für Systemintegration, grob beschrieben gehts hier um den Schwerpunkt Netzwerk.
Das Gegenstück dazu ist der Fachinformatiker für Anwendungsentwicklung, das sind die Progger die im dunklen Keller bei Chips und Cola leben ;D

Fachinformatiker Systemintegration BERUFENET, Berufsinformationen einfach finden - Suche

Fachinformatiker Anwenungsentwicklung BERUFENET, Berufsinformationen einfach finden - Suche

Lies dir das mal durch, da steht im groben drinnen was du machst, aber das Berufsbild ist von Betrieb zu Betrieb anders.
Ich bin beispielsweise in der Automobilindustrie tätig, da ist mein Aufgabengebiet ganz anders, als bei meinem Berufsschulkollegen, die in einem Unternehmen IT-Serviceleistungen etc. anbieten.

Und bzgl. proggen... Heute nicht mehr, heute gehört der Abend meiner Freundin


----------



## Supeq (5. Mai 2011)

RC-X schrieb:


> @Fadade:
> Ich lerne Fachinformatiker für Systemintegration, grob beschrieben gehts hier um den Schwerpunkt Netzwerk.
> Das Gegenstück dazu ist der Fachinformatiker für Anwendungsentwicklung, das sind die Progger die im dunklen Keller bei Chips und Cola leben ;D



Fast richtig, die FIAE´s sind die, die den FiSi´s erklären wie man proggt !


----------



## RC-X (5. Mai 2011)

ganz ehrlich? die parallel-klasse bei uns in der BS besteht nur aus AE'lern...
und die können proggen noch weniger als wir Sysis


----------



## fadade (5. Mai 2011)

hm .. jaja ... soso FIAE, FiSI, AE, FISIFO, FASATU, AEK, USW 
nein, scherz^^, schon klar was gemeint ist 




RC-X schrieb:


> @Fadade:
> Ich lerne Fachinformatiker für Systemintegration, grob beschrieben gehts hier um den Schwerpunkt Netzwerk.
> Das Gegenstück dazu ist der Fachinformatiker für Anwendungsentwicklung, *das sind die Progger die im dunklen Keller bei Chips und Cola leben ;D*
> 
> ...



ich glaube, damit hast du meinen Studiumswunsch Informatik komplett abgesiegelt. Nur muss ich mal schauen, ob und wie man sich hier auf der Uni auch so spezialisieren kann 
naja denn genieße mal deinen bzw. "ihren" Abend 


PS: hat hier sonst noch jemand eine kleine Programmieraufgabe für mich? (wenn nicht, sehe ich mich gezwungen dazu einen Thread zu eröffnen )


----------



## RC-X (7. Mai 2011)

Du könntest einen Palindromchecker basteln 
Das schwierige dazu: Es darf nur eine Txtbox sein und er muss leerzeichen, kommas und groß und kleinschreibung ignorieren.

Ein Palindrom ist ein Wort, das von vorne und hinten gelesen, das gleiche ergibt.
z. B. Radar, Otto, Lagerregal, aber auch zahlenfolgen wie 01110


----------



## fadade (7. Mai 2011)

Am Samstag Arbeitsaufträge verteilen ... tz tz tz  


```
private void palindromchecker(String s) //s kann dabei z.B. wieder textBox1.Text sein
{
       s = s.ToUpper();
       char[] richtigrum = new char[s.Length];
       char[] falschrum = new char[s.Length];
       for (int i = 0; i < s.Length; i++) //in arrays speichern
       {
            richtigrum[i] = s[i];
            falschrum[i] = s[(s.Length - 1 - i)]; //das eingabewort rückwärts einlesen ;)
        }

        bool gleich = true;
        for (int i2 = 0; i2 < s.Length; i2++) //arrays vergleichen
        {
              if (richtigrum[i2] != falschrum[i2])
              gleich = false;
         }

         if (gleich)
                MessageBox.Show("es handelt sich um ein Palindrom oder du hast einen leeren text eingegeben^^","infooooo");
}
```
so ich hoffe, das funktioniert, ist noch nicht getestet 
und eine Fehlerbehandlung gibts auch nicht^^
hier isses mir arrays gemacht. sonst könnte man evtl. auch String s1 als originalwort und s2 als s1.Reverse() nehmen und dann einfach vergleichen ...

@supeq: array-List  sagt mir noch gar nichts....


€dit: "falschrum_ = s[(s.Length - 1 - i)];" korrigiert und die ToUpper-Methode hinzugefügt^^_


----------

