PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VB.NET] Nach String suchen



PCFX
28.06.2009, 13:24
Hi, diesmal bin ich auf der suche nach (eigentlich) Standard-Prozeduren:


nach einem String suchen
eine Datei erstellen

Mir würde es schon reichen, wenn mir jemand sagt, wo man das nachlesen kann. Im Openbook von GalileoDesign habe ich dazu nichts anständiges gefunden und über Google nur VB6 Samples.

Sawyer
28.06.2009, 13:28
Dateien Erstellt man in .net mittels Streams


Dim sw As New StreamWriter("C:\test.txt")
sw.WriteLine("HalloWelt!")
sw.Flush()
sw.Close()http://openbook.galileocomputing.de/einstieg_vb_2008/visual_basic_kap_06_003.htm#mj7cb023f0a692a9323937 9ae80a102706
http://msdn.microsoft.com/de-de/library/system.io.filestream.aspx


nach einem String suchenErkläre mal genauer was du damit meinst , innerhalb eines strings suchen ? oder in einer Datei ?

MfG

inmate
28.06.2009, 13:38
Oder :

Dim inhalt as string = "Hallo"

IO.File.Create("C:\bla.txt",inhalt)

die Streamwriter Methode ist aber um Klassen besser ;)

und was du mit nach einem String suchen meinst verstehe ich nicht ^^

mfG

PCFX
28.06.2009, 13:40
Ich erklärs mal im Zusammenhang ist dann einfacher zu verstehen:
Ich will einen Account Manager coden, der alle Eintrage in einer Textdatei ablegen soll. Beim Start soll die Textdatei eingelesen werden und die ListView ausfüllen.

Inhalt der Textdatei

URL : www.google.de
ich_bin_der_Username
ich_bin_das_Passwort
URL: www.free-hack.com
...
...Einlesen: Wenn er "URL :" in der eingelesen Zeile findet dann...bla bla

Bild von der Programmoberfläche:
http://s11.directupload.net/file/d/1839/um83gk4t_jpg.htm

inmate
28.06.2009, 13:51
Imports System.IO
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim einleser = New StreamReader("C:\x.txt").ReadToEnd
RichTextBox1.Text = einleser
Dim wort As String = "URL"
If RichTextBox1.Text.Contains(wort) Then
MsgBox(wort)
End If
End Sub
End Class

edit:
oder so ohne die richtextbox


Imports System.IO
Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim einleser = New StreamReader("C:\x.txt").ReadToEnd
Dim tostr As String = CStr(einleser)
Dim wort As String = "URL"
If tostr.Contains(wort) Then
MsgBox(wort)
End If
End Sub
End Class

Sawyer
28.06.2009, 13:58
@inmate , das ganze gibt aber nur ein selbstdefiniertes Wort aus , nicht was wirklich dort steht

Hab mal ein sample geschrieben , was die Daten automatisch durchläuft und einzeln trennt , danach kannst du die Daten ja in dein ListView hinzufügen

Das wichtigste ist zuerst einmal das du die Datei Komplett einließt , danach splittest du nach jedem Zeilenumbruch.
Ich würde es allerdings jeweils in eine Zeile machen , so kann man es leichter wieder trennen

Im Format:

URL : www.google.de~ich_bin_der_Username~ich_bin_das_Pas swort (http://www.google.de%7Eich_bin_der_Username%7Eich_bin_das _Passwort)
URL: www.free-hack.com~username~passwort (http://www.free-hack.com%7Eusername%7Epasswort)


Dim sr As New System.IO.StreamReader("C:\Neues Textdokument.txt")
Dim Buffer As String = sr.ReadToEnd()
sr.Close()

Dim Daten As String() = Buffer.Split(ControlChars.CrLf)
Dim AlleDaten As String()

For Each i As String In Daten
AlleDaten = i.Split("~")

For Each x As String In AlleDaten
Console.WriteLine(x)
Next

Next

Console.Read()

End SubMfG

PCFX
28.06.2009, 17:19
So bin nun soweit:


Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim sr As New System.IO.StreamReader("C:\Users\PCFX\Desktop\test.txt")
Dim Buffer As String = sr.ReadToEnd
sr.Close()
Dim Daten As String() = Buffer.Split(ControlChars.CrLf)
Dim AlleDaten As String()

Dim Var1 As Boolean
Dim Var2 As Boolean
Dim Var3 As Boolean
Dim Item As New ListViewItem

For Each i As String In Daten
AlleDaten = i.Split("~")

For Each x As String In AlleDaten
MsgBox(x)
If Var1 = True Then
Var1 = False
Item.Text = x
Var2 = True
End If
If Var2 = True Then
Var2 = False
Item.SubItems.Add(x)
Var3 = True
End If
If Var3 = True Then
Var3 = False
Item.SubItems.Add(x)
ListView1.Items.Add(Item)
Var1 = True
End If
Next

Next

End SubInhalt der Textdatei:


www.google.de~12~45
www.wii.com~tralala~muh
Hab mir mal x in einer MsgBox ausgeben lassen (s.o. fett markiert), kommt auch alles hintereinander und zum Schluss eine leere. Aber in die ListView1 wird trotzdem nichts eingetragen. Was mache ich falsch ?

inmate
28.06.2009, 18:03
If Var1 = True Then
Var1 = False
Item.Text = x
Var2 = True
End If

das ist falsch . übersetzt heisst das wenn var1 war ist ist var1 falsch :o

Du musst das so schreiben:
if checkbox1.checked = true then
var1 = true
else
var1 = false
end if

Sirect
28.06.2009, 18:15
Oder einfach:



var1 = checkbox1.checked


:D

PCFX
28.06.2009, 18:18
Es gibt aber gar keine Checkbox ?! Var1, Var2, Var3 soll mir doch nur helfen die 3 Werte auszulesen..

Sirect
28.06.2009, 18:22
Ich hab nur inmate's Sample angepasst :D

inmate
28.06.2009, 22:47
var 1 , var2, var3 sind aber boolesche Werte , und dein Code wird nicht gehen , da du es so geschrieben hast das wenn var1 war ist sie gleichzeitig falsch ist.
Ein boolescher Wert kann nur war oder falsch sein und nicht beides ;)

mfG