# Text aus Textbox auslesen!



## Dark Ranger (25. August 2005)

Also! Ich will einen Text in eine Textbox kopieren und dann den Text auseinandernehmen!

Z.B.: Brauche ich den Text in der ersten Zeile, der Zwischen [ und ] steht! Und dann zum Beispiel noch den Text in der zweiten Zeile von Anfang bis dahin, wo zum ersten mal die Zaheln aufhören!
Ich kann halt nicht nach dem Text suchen lassen, weil der sich immer wieder verändert, aber diese Merkmale, die ich oben beschrieben haben, ändern sich nicht!

Und dann sollen die Werte in verschiedene Textboxen aufgeteilt werden!
Wert1 soll in Textbox1
Wert2 in Textbox 2 usw.

Gibt es dafür irgendwelche Befehle? Habt ihr mich überhaupt verstanden?


----------



## zioProduct (26. August 2005)

Wird dir bestimmt alle Antworten liefern, oder nutze Suchen funktion des Forums 

Such nach Split + String in google, dann bekommste ganz viele Antworten 

mfg
ziop


----------



## Dark Ranger (26. August 2005)

Ok!
Es ist immer gut zu wissen wonach man suchen muss!


----------



## Dark Ranger (28. August 2005)

Ich habe Google benutzt und weiß wie ich Split usw. benutze, aber ich habe nicht gefunden, wie man einen Text Zwischen Zwei Zeichen ausliest, kann mir das jemand erklären?


----------



## dignsag (29. August 2005)

Du suchst mit der InStr-Funktion erst nach "[", das liefert dir die Position des [ als Zahl zurück. Schau nach InStr in der Hilfe
 Dann suchst du mit InStr nach "]"
 Und diese beiden Werte benutzt du dann mit der mid-Funktion (Hilfe hilft).

 Allerdings gibt es da noch ein kleines Problem:
 bei mid musst du die länge des Teilstrings angeben, d.h. das der zweite InStr wert dir nicht weiterhelfen wird. Du musst dir die länge zwischen [ und ] errechnen. Dafür nimmst du den 2. InStr wert und ziehst den 1. Instr wert ab.

 Das sieht dann soaus:

```
mid("Hier steht ein [ und ein ]", 1. InStrWert, 2. InStrWert - 1. InStrWert)
 
 Ergebnis: " und ein "
```
 
 Die Umsetzung überlass ich mal dir!


----------



## Dark Ranger (29. August 2005)

Danke, dass hilft mir sehr weiter!
Is immer mal wieder schön zu wissen, nach was man suchen muss!


----------



## Dark Ranger (3. September 2005)

Geht ganz gut, aber kann ich irgendwie den Code verkürzen?


```
Dim Eingabe As String
Dim p1 As Integer
Dim p2 As Integer
Dim p3 As String
Dim m1 As Integer
Dim m2 As Integer
Dim m3 As String
Dim k1 As Integer
Dim k2 As Integer
Dim k3 As String
Eingabe = txtEingabe.text
If InStr(Eingabe, "[") And InStr(Eingabe, "]") Then
p1 = InStr(Eingabe, "[")
p2 = InStr(Eingabe, "]")
p3 = Mid(Eingabe, p1, p2 - p1)
LblPosition.Caption = "Position " & p3 & "]"
Else
LblPosition.Caption = "Keine Angaben"
End If
If InStr(Eingabe, "3.Wort") And InStr(Eingabe, "4.Wort") Then
m1 = InStr(Eingabe, "3.Wort")
m2 = InStr(Eingabe, "4.Wort")
m3 = Mid(Eingabe, m1, m2 - m1)
Lbl3Wort.Caption = m3
Else
Lbl3Wort.Caption = "Keine Angaben"
End If
If InStr(Eingabe, "4.Wort") And InStr(Eingabe, "5.Wort") Then
k1 = InStr(Eingabe, "4.Wort")
k2 = InStr(Eingabe, "5.Wort")
k3 = Mid(Eingabe, k1, k2 - k1)
Lbl4Wort.Caption = k3
Else
Lbl4Wort.Caption = "Keine Angaben"
End If
```

Es wird halt immer nach ganz bestimmten Wörtern gesucht! Kann mir da einer einen Vorschlag machen, wie ich den Code verkürzen kann, hilft da vielleicht eine Tabelle oder eine Textdatei wo die ganzen wörter nacheinander drinstehen?
Aber sonst funktioniert der Code perfekt, dank an "dignsag"


----------



## Dark Ranger (4. September 2005)

Anscheinend kennt sich auf diesem Gebiet keiner mehr aus oder?


----------



## dignsag (5. September 2005)

Schon, aber ich bin im Moment viel zu sehr beschäftigt als mich da grad durchzudenken. Wenn ich ein freies Minütchen finde werd ich mirs gern nochmal angucken.

 Gruß Dignsag


----------



## Dark Ranger (6. September 2005)

OK alles klar! Ich komme irgendwie nicht weiter, obwohl ich den ganzen Tag im Internet nach Lösungen suche!


----------



## dignsag (7. September 2005)

Aaaaaaaalso,

 ich hab mir das ganze jetzt mal näher angeschaut, und bin schon recht stolz das du das alleine so weit hinbekommen hast. Ich kann dir mal zeigen was ich noch geändert habe:

 Erstmal musst du die InStr-Werte nicht jedes mal in eine neue Variable schreiben, völlig unnötig. Du kanns dein InStr() so behandeln als wäre es der Wert der später bei der Durchführung ermittelt wird.

  Beispiel:


```
'Dein Code
  
  If InStr(Eingabe, "[") And InStr(Eingabe, "]") Then
  	 p1 = InStr(Eingabe, "[")
  	 p2 = InStr(Eingabe, "]")
  	 p3 = Mid(Eingabe, p1, p2 - p1)
  	 LblPosition.Caption = "Position " & p3 & "]"
  Else
  	 LblPosition.Caption = "Keine Angaben"
  End If
  
  'Mein Vorschlag
  
  If InStr(Eingabe, "[") And InStr(Eingabe, "]") Then
 		p3 = Mid(Eingabe, InStr(Eingabe, "["), InStr(Eingabe, "]") - InStr(Eingabe, "["))
  		LblPosition.Caption = "Position " & p3 & "]"
  Else
  		LblPosition.Caption = "Keine Angaben"
  End If
```
 
  Dadurch sparst du dir natürlich auch ne Menge Variablen

  Schau:

```
'Deine Variablendeklarationen
  Dim Eingabe As String
  Dim p1 As Integer
  Dim p2 As Integer
  Dim p3 As String
  Dim m1 As Integer
  Dim m2 As Integer
  Dim m3 As String
  Dim k1 As Integer
  Dim k2 As Integer
  Dim k3 As String
  
  'und die die ich brauche
  
  Dim Eingabe As String
  Dim p3 As String
  Dim m3 As String
  Dim k3 As String
```
 
  Und hier dein Code mit meinen Vorschlägen umgestellt:


```
Dim Eingabe As String
  Dim p3 As String
  Dim m3 As String
  Dim k3 As String
  	
  Eingabe = txtEingabe.Text
  	
  If InStr(Eingabe, "[") And InStr(Eingabe, "]") Then
 		p3 = Mid(Eingabe, InStr(Eingabe, "["), InStr(Eingabe, "]") - InStr(Eingabe, "["))
  		LblPosition.Caption = "Position " & p3 & "]"
  Else
  		LblPosition.Caption = "Keine Angaben"
  End If
  	
  If InStr(Eingabe, "3.Wort") And InStr(Eingabe, "4.Wort") Then
  		m3 = Mid(Eingabe, InStr(Eingabe, "3.Wort"), InStr(Eingabe, "4.Wort") - _ 
  		InStr(Eingabe, "3.Wort"))
  		Lbl3Wort.Caption = m3
  Else
  		Lbl3Wort.Caption = "Keine Angaben"
  End If
  	
  If InStr(Eingabe, "4.Wort") And InStr(Eingabe, "5.Wort") Then
  		k3 = Mid(Eingabe, InStr(Eingabe, "4.Wort"), InStr(Eingabe, "5.Wort") - _ 
  		InStr(Eingabe, "4.Wort"))
  		Lbl4Wort.Caption = k3
  Else
  		Lbl4Wort.Caption = "Keine Angaben"
  End If
```
 
 Das sieht doch schon besser aus oder? Das ganze könntest du evtl. noch durch "Schleifen" vollends verkürzen. Mit "Arrays" kannst du die Variablendeklaration sogar noch verkürzen.
 Aber dich da mal zu informieren und rumzuprobieren überlass ich mal wieder dir ^^

  Hoffe geholfen zu haben


----------



## Dark Ranger (7. September 2005)

Klar haste geholfen!


----------



## icKe` (27. September 2005)

Hallo,

ich brauchte dieses Beispiel auch.

Allerdings habe ich das Problem, dass bei meiner Ausgabe das erste Zeichen, in diesem Beispiel das "[" mit ausgegeben wird. Das möchte ich jedoch nicht.

Wie kann ich das ändern


Um es noch einmal zu erläutern: In dem o.g. Beispiel war es ja so, dass der Text zwischen einem "[" und "]" ausgegeben werden sollte.
Sagen wir mal: [tutorials.de] => tutorials.de
Bei mir ist es allerdings so: [tutorials.de] => [tutorials.de


Danke!


----------



## zioProduct (27. September 2005)

Kleiner Tipp am Rande:
Informier dich doch bitte erst was die Funktionen genau bewerkstelligen, dann weisste ganz schnell wo dein Fehler liegt. Ich würd mal auf die Schnelle sagen, du hast [ nicht als eischränkung, sondern einfach als string also "[" gesetzt, wodurch er dir halt deinen String auch ausschreibt.

Bischen mehr Motivation so einen kleinen Fehler selber zu finden. Erstens bringts dir mehr, zweitens kannste dann Stolz auf dich sein, dass du schon etwas alleine geschaft hast ;-) 

Mfg
ziop


----------



## icKe` (27. September 2005)

also mein "text" sieht wie folgt aus: `s€KassennameKassennummer?VKNR‚VersichertennummerƒStatus +
-ergänzung…Vorname‡NachnameˆGeb.‰Straße‹PLZŒOrtGültig bisŽ;b‚

das ist die ausgabe einer krankenversichertenkarte mit hilfe eines lesegeräts. die ganzen sonderzeichen dienen als trenner und sind auf jeder kvk gleich.

jetzt will ich halt sagen wir mal den vornamen ausschneiden.

setze "…" als 1. wert und "‡" als 2. wert und bekomme als ausgabe "…Vorname", wobei es ja nur "Vorname" sein sollte.


----------



## dignsag (27. September 2005)

Dann setzt doch mal z.B. hinter deinen InStr Startwert ein +3 und schau dir die Ausgabe nochmal an!


----------



## icKe` (27. September 2005)

hab's jetzt anders...

vname = Mid(eingabe, InStr(eingabe, "…") + 1, InStr(eingabe, "‡") - 1 - InStr(eingabe, "…"))

...und es läuft soweit!

vorher: vname = Mid(eingabe, InStr(eingabe, "…"), InStr(eingabe, "‡") - InStr(eingabe, "…"))


danke für die antworten!!


----------



## Dark Ranger (27. September 2005)

> Um es noch einmal zu erläutern: In dem o.g. Beispiel war es ja so, dass der Text zwischen einem "[" und "]" ausgegeben werden sollte.
> Sagen wir mal: [tutorials.de] => tutorials.de
> Bei mir ist es allerdings so: [tutorials.de] => [tutorials.de



Bei mir wird auch [tutorials.de ausgegeben, aber das wollte ich auch nicht anders, weil nachher sollte sowieso [tutorials.de] da stehen und deswegen habe ich einfach noch ein ] drangehängt!


----------



## Dark Ranger (28. September 2005)

dignsag hat gesagt.:
			
		

> Aaaaaaaalso,
> 
> ich hab mir das ganze jetzt mal näher angeschaut, und bin schon recht stolz das du das alleine so weit hinbekommen hast. Ich kann dir mal zeigen was ich noch geändert habe:
> 
> ...



Ist es möglich, Das ich nach zwei Stellen im Text suche und alle Wörter (keine Zahlen) die zwischen diesen zwei Wörtern vorkommen, dass nach alles in Labels geschrieben wird und zwar immer so Wort1 + Zahl hinter Wort1, Wort2 + Zahl hinter Wort2 usw.?

Hat das wer verstanden?


----------



## dignsag (29. September 2005)

Nö, etwas genauer bitte!


----------



## Dark Ranger (29. September 2005)

Also ich habe einen Text, indem immer Sektionen mit bestimmten überschriften sind und zwischen diesen Überschriften steht halt immer wieder etwas anderes, aber immer in der gleichen Form (Wort+Zahl)!

Und ich wollte es halt so machen, dass der Computer nach den Überschriften sucht und dann alles was dazwischen steht immer einzenln auf Labels aufteilt (Label1 = Wort1+Zahl1; Label2 = Wort2 + Zahl2; Label3 = Wort 3 + Zahl3) usw. usw. usw.


----------

