# Text Speichern / Laden?



## Janares (1. April 2003)

Hallo ich hab mal eine Frage bin Anfänger in VB und wollt mal wissen wie man Text die Man in eine Textbox schreibt speichern kann Format ist erstmal egal und diese dann anschliessend wieder laden kann.

Danke im vorraus


----------



## Dario Linsky (1. April 2003)

Speichern:

```
Open "C:\datei.txt" For Output As #1
Print #1, Text1.Text
Close #1
```

Einlesen:

```
Open "C:\datei.txt" For Input As #1
Do While Not Eof(1)
    Text1.Text = Text1.Text & vbNewLine
    Line Input #1, Text1.Text
Loop
```
Für die Version mit dem Einlesen musst Du die Eigenschaft "MultiLine" von der Textbox auf True setzen.


----------



## Janares (2. April 2003)

geht das auch so ähnlich wenn man einen film öffnen will?


----------



## Dario Linsky (2. April 2003)

Nein. Ein Film (oder eine andere beliebige Mediendatei) ist binär gespeichert. Die beiden Versionen von da oben gelten nur für Textdateien zur Verarbeitung.
Wenn Du beispielsweise eine AVI-Datei abspielen willst, solltest Du Dich mal besser mit dem Mediaplayer von Microsoft beschäftigen. Der bietet eine Schnittstelle für VB an.


----------



## Nanaki (3. Mai 2003)

Also. Ich hab das ganze nun auch mal ausprobiert. Das Speichern ghet ja perfekt. Aber das Laden... Ich glaub ich hab da was falsch gemacht.....



```
Private Sub Beenden_Click()
Unload Me
End Sub

Private Sub Speichern_Click()
Open "C:\datei.txt" For Output As #1
Print #1, Text1.Text
Close #1
End Sub

Private Sub Laden_Click()
Open "C:\datei.txt" For Input As #1
Do While Not EOF(1)
    Text1.Text = Text1.Text & vbNewLine
    Line Input #1, Text1.Text
Loop
End Sub
```


Und dann würde ich noch gern wissen, wie man Texte ausließt. Also ich schreibe etwas in ein Textfeld und es werden in ein neues Nur bestimmte Teile kopiert.

Beispiel:
*
Ich spiele mit einem gelben Ball
Ich esse mit der roten Gabel
*
Das kommt in das 1. Textfeld. Wenn ich nun "Auslesen" klicke soll im Textfeld 2 folgendes erscheinen:
*
spiele gelb
esse rot
*

Bitte kann mir da jemand helfen



P.S. Ja die sätze sind sinnlos aber für ein Beispiel reicht es


----------



## Thomas Darimont (3. Mai 2003)

Servus!

Willst du aus den Sätzen anhand von bestimmten "Wortmustern" entscheiden, ob ab dieser Stelle gelesen und in das andere Textfeld kopiert werden soll?

Also brauche um dir zu helfen Antworten auf folgende Frage:

Wie entscheidest du ab WANN die zu kopierende Zeichenkette anfängt 
(bestimmte Stelle im Textfeld (z.Bsp.: Zeichen Nr. 15 ... oder bei bestimmtem Wortmuster und wo sie endet? 

Gruss Tom


----------



## Nanaki (4. Mai 2003)

also es werden nur bestimmte wörter kopiert. Immer das gleiche. 
in jeder zeile das 2. und 5. wort wobei die wörter immer eine andere länge haben. am bestenm ich poste schnell das, wofür ich es nutzen will.

*
03.05.2003 - 17:09:00 
Eine verbündete Flotte von 384 Schiffen zieht sich zurück. Ursprung: (293:2) 
03.05.2003 - 17:08:56 
Die Scanner haben eine verbündete Flotte von 384 Schiffen entdeckt. Ursprung: (293:2), Reisezeit: 3 
03.05.2003 - 17:08:49 
Eine feindliche Flotte von 384 Schiffen zieht sich zurück. Ursprung: (293:2) 
03.05.2003 - 17:08:46 
Die Scanner haben eine feindliche Flotte von 384 Schiffen entdeckt. Ursprung: (293:2), Reisezeit: 4 
*
das ist von einem Browsergame ein ausschnitt. nun soll mein programm die angreifenden und verteidigenden flotten auslesen und zusammenrechnen.


----------



## Nanaki (4. Mai 2003)

Achso das Problem mit dem speichern und laden hab ich behoben


```
Dim text As String

Private Sub laden_Click()
Open "C:\datei.txt" For Input As #1
Do While Not EOF(1)
Line Input #1, text
Text1.text = Text1.text & vbNewLine & text
Loop
End Sub

Private Sub speichern_Click()
Open "C:\datei.txt" For Output As #1
Print #1, Text1.text
Close #1
End Sub
```


----------



## Thomas Darimont (4. Mai 2003)

Servus!

In deinen geposteten Textausschnitten sehe ich aber leider keine genauen Muster, die ein "angreifendes" bzw. ein "verteidigendes" Schiff definieren ...

Aber ein Wort an einer bestimmten Stelle könntest du erfassen, indem du erstmal annimmst, dass alle Wörter durch Leerzeichen  voneinander getrennt sind. Zähle nun die Leerzeichen vom Start ab bis zu dem Wort, dass du haben willst. Nun kannst du immer im String nach dem X-ten Leerzeichen suchen und ab dann eine Zeichenkette von einer bestimmten länge extrahieren.

Oder aber du Splitest den kompletten String mit split(Str as String, " ") in ein Stringarray auf, wobei das Leerzeichen als Trennzeichen betrachtet wird. Nun durchläufst du das Stringarray und suchst nach dem Element, das mit einer bestimmten Zeichenfolge übereinstimmt: 
Bsp.:

Dim str = "Das angreiffende Schiff heist Excelsior"
Dim strArray() as String
strArray = split(str," ")

StrArray(0) = "Das"
StrArray(1) = "angreiffende"
StrArray(2) = "Schiff"
StrArray(3) = "heist"
StrArray(4) = "Excelsior"

nun suchst Du z.Bsp. das Element, das mit "angreiffende" übereinstimmt. Hast du es gefunden nimmst du die nächsten y ArrayFelder alle mit in einen Antwortstring und ... fertig.

Gruss Tom


----------



## Nanaki (4. Mai 2003)

Moin

ohje... ich als noob check das gar net. ich mal so viel begriffen, dass strArray = Split(Str, " ") den ganzen text teilt. Aber könntest du mir bitte bitte das ganze so schicken, dass er immer das 2. wort aus Textfeld1 ausliest (aus jeder zeile) und in Textfeld2 schreibt wenn ich auf den button Command1 klicke.

In code bitte bitte


----------



## Thomas Darimont (4. Mai 2003)

Servus!

Hier...


Gruss Tom


----------



## Nanaki (4. Mai 2003)

Servus

geil. genau so hab ich mir das vorgestellt. thx

nun hab ich etwas verändert. ich habe multiline auf true gesetzt um einen mehrzeiligen text zu kopieren.









kannst du mir den code posten wie man das macht. also ich benötige datum, uhreit und das 1. und 3. wort aus den zeilen. Was du links siehst kann ins unendliche nach unten gehen.


----------



## Thomas Darimont (4. Mai 2003)

Servus!

hier...

Gruss Tom


----------



## Tobiasm (9. Mai 2003)

Beim letzten Bundeswettbewerb für Informatik gab es eine Aufgabe, die ganz ähnlich war. Da musste man nur eben ein Reservierungssystem schreiben, dass auch auf bestimmte Schlüsselwörter reagierte. unter http://www.tobias-thierer.de/bwifiles.html kannst Du Dir die Lösungen von ein paar Leuten herunterladen, vielleicht hilft das ja weiter.

MfG

Tobias


----------



## Nanaki (9. Mai 2003)

thx leute. hat mir alles weitergeholfen. Bin jetzt endlich fertig ^^


----------

