Re: *.dat Datei öffnen



Hallo,
Danke, wollen mal sehen ob mir das weiterhilft.

LG Paps

"Karsten Sosna" schrieb:

> > Ich habe in meinem Prog. eine Combobox, dessen inhalt in eine Datei
> > (namen.dat) geschrieben wird. Diese Datei kann man mit dem WordPad öffnen
> > und
> > bearbeiten.
> >
> > Kann man es irgentwie hinkriegen, das ich einen Button in meine Toolbar
> > setzte, womit diese Datei direkt in WordPad geöffnet wird, ohne erst mit
> > "datei öffnen" im Pad diese zu laden???
> > Danke im vorraus!
>
> IMHO, falscher Ansatz. Wenn Du lediglich den Inhalt der ComboBox in einer
> Datei speicherst, solltest auch nur maximal einen reinen
> Texteditor(Notepad.exe) öffnen, da Formatierungen, die in anderen
> Editoren(Wordpad.exe) ggf.gespeichert werden könnten, damit ist die Datei
> als Quelle für die ComboBox unbrauchbar.
> Wenn Du das schon mit einer Text-Datei lösen willst, dann erstelle einfach
> ein Formular mit einer TextBox(Multiline = True), dort lädst Du die Datei
> hinein. Beim Speichern durchläufst Du einfach die Lines-Auflistung und
> speicherst die einzelnen Lines. Danach wird der Inhalt der Datei wieder an
> die ComboBox angeglichen.
>
> Ich würde aber eine DataTable als Datenquelle für die ComboBox nutzen und
> diese serialisieren/ deserialisieren. Folgendes Beispiel benötigt eine
> ComboBox(ComboBox1), eine TextBox(TextBox1) und einen Button(Button1):
> \\\
> Private dt As New DataTable("ComboBox")
> Private fileName As String = "C:\Temp\Test.xml"
>
> Private Sub FRM_Main_Load(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles MyBase.Load
> Dim dr As DataRow
> If IO.File.Exists(fileName) Then
> Dim StreamRead As IO.Stream = IO.File.OpenRead(fileName)
> Dim deserializer As New
> System.Runtime.Serialization.Formatters.Soap.SoapFormatter
> dt = DirectCast(deserializer.Deserialize(StreamRead), DataTable)
> StreamRead.Close()
> 'dt.Columns.Add("Display")
> 'Call Read(fileName)
> Else
> dt.Columns.Add("Display")
> dr = dt.NewRow
> dr("Display") = "Entry 1"
> dt.Rows.Add(dr)
> dr = dt.NewRow
> dr("Display") = "Entry 2"
> dt.Rows.Add(dr)
> End If
>
> ComboBox1.DataSource = dt
> ComboBox1.DisplayMember = "Display"
>
> Button1.Text = "Akualisieren"
> TextBox1.Multiline = True
> TextBox1.Text = ""
> For Each dr In dt.Rows
> TextBox1.Text &= dr("Display").ToString & vbCrLf
> Next
> End Sub
>
> Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
> System.EventArgs) Handles Button1.Click
> dt.Rows.Clear()
> For Each line As String In TextBox1.Lines
> Dim dr As DataRow = dt.NewRow
> dr("Display") = line
> dt.Rows.Add(dr)
> Next
> End Sub
>
> Private Sub FRM_Main_Closed(ByVal sender As Object, ByVal e As
> System.EventArgs) Handles MyBase.Closed
> Dim StreamWrite As IO.Stream = IO.File.OpenWrite(fileName)
> Dim serializer As New
> System.Runtime.Serialization.Formatters.Soap.SoapFormatter
> serializer.Serialize(StreamWrite, dt)
> StreamWrite.Close()
> 'Call Write(fileName)
> End Sub
> ///
> Wenn Du kein XML-File gebrauchen kannst, tausch einfach den Serializer/
> Deserializer gegen eine IO-Operarion aus, die Dir die Datei sequentiell
> schreibt/ einliest. Dazu die Kommentare rückgängig machen und die
> Serializer/ Deserializer-Anweisung auskommentieren:
> \\\
> Private Sub Read(ByVal fileName As String)
> Dim SR As New IO.StreamReader(IO.File.OpenRead(fileName))
> Dim dr As DataRow
> Do Until SR.Peek = -1
> dr = dt.NewRow
> dr("Display") = SR.ReadLine
> dt.Rows.Add(dr)
> Loop
> SR.Close()
> End Sub
>
> Private Sub Write(ByVal fileName As String)
> Dim SW As New IO.StreamWriter(IO.File.OpenWrite(fileName))
> For Each dr As DataRow In dt.Rows
> SW.WriteLine(dr("Display"))
> Next
> SW.Close()
> End Sub
> ///
> --
> Gruß Scotty
>
>
>
.