Benutzer mit den meisten Antworten
Text in Textdatei einbringen

Frage
-
Hallo,
Ich habe eine frage, geht das wenn ich jetzt eine textbox habe und ich darin was schreibe das wenn ich das in ein textdokument anfüge ?
zb:
Im Textfile steht :
Bla
Bla
Blub
und das dann unter dem blub als line 4 das was in der Textbox steht darunter dran gesetzt wird ?Dann noch eine kleine frage :
Kann man eine zahlen reihe fortsetzen mit einem code?
Ich habe das hier wo er aus der textdatei ausließt :If Auftrag.Text = "1" Then
Produkt.Text = lines(1)
Stück.Text = lines(2)
Bild.ImageLocation = lines(3)
End If
dann möchte ich das wenn ich bei Auftrag.Text 2 rein schreibe in die Textbox dass er automatisch die lines 4,5 & 6 ausliest und dann eben so weiter sonst müsste ich da 100 mal das bearbeiten.
Vielen dank schon mal
MfG
Antworten
-
Hi,
Ich habe eine frage, geht das wenn ich jetzt eine textbox habe und ich darin was schreibe das wenn ich das in ein textdokument anfüge ?
zb:
Im Textfile steht :
Bla
Bla
Blub
und das dann unter dem blub als line 4 das was in der Textbox steht darunter dran gesetzt wird ?Ich weiß zwar nicht, ob ich deine Frage richtig verstanden habe aber falls ja, wäre das hier passend.
My.Computer.FileSystem.WriteAllText( "X:\Ordner\Datei.txt", <TextBox>.Text, True)
Damit wird der Inhalt der TextBox an die Datei angehangen.
dann möchte ich das wenn ich bei Auftrag.Text 2 rein schreibe in die Textbox dass er automatisch die lines 4,5 & 6 ausliest und dann eben so weiter sonst müsste ich da 100 mal das bearbeiten.
Öhm. Deine Fragestellung ist ziemlich "komisch".
Wenn Du immer drei Zeilen aus einer Datei lesen willst, wobei die zu lesenden Zeilen abhängig von einer eingegeben Zahl sein sollen, liest dich mal hier ein:
http://msdn.microsoft.com/de-de/library/system.io.streamreader.readline.aspx
http://msdn.microsoft.com/de-de/library/db5x7c0d.aspx
http://msdn.microsoft.com/de-de/library/s2tte0y1.aspx
Dim LineToStart As Int64 Dim LineCount As Int64 = 3 LineToStart = ( <Eingabe> * LineCount ) + 1 For Counter As Int64 = 1 To LineToStart - 1
<StreamReader>.ReadLine() Next Produkt.Text = <StreamReader>.ReadLine() Stück.Text = <StreamReader>.ReadLine() Bild.ImageLocation = <StreamReader>.ReadLine()So in etwas könnte man es machen. Da fehlen aber natürlich noch einige Sachen wie Fehlerbehandlung, wenns gar nicht so viele Zeilen gibt, ...
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert Breitenhofer Donnerstag, 27. Mai 2010 09:08
-
Hallo,
leider hattee ich es unglüclicklich formuliert, als ich "auftrag" zweimal verwendet habe.
Richtiger wäre gewesen: Entweder Me.auftrag.Text, wenn man von einem Steuerelement
ausgeht, oder ein anderer Variablenname für den Integer (z. B. auftragIndex).
Ansonsten ist das durchaus richtig. Integer.TryParse liest einen Text ein und liefert
nur dann Wahr wenn es sich um eine Zahl handelt.
(1 - 1) * 3 => 0, (2 - 1) * 3 => 3, (3 - 1) * 3 = 6 usw.
Der Code so gestaltet, dass er unabhängig von Steuerelementen und Datei funktioniert:
Public Sub AuftragSchleife() Dim lines As String() = {"Bla", "Bla", "Blubb", "2. Bla", "2. BlaBla", "2. Blubb", "3. Bla", "3. Bla", "3. Blubb"} ' Simulierte Eingabe Dim AuftragTexte As String() = {"1", "2", "3", "abc", "0", "-1"} For Each auftragText In AuftragTexte Dim auftrag As Integer If Integer.TryParse(auftragText, auftrag) Then ' Auftrag ab 1. mit jeweils 3 Zeilen, Array beginnt bei 0 auftrag = (auftrag - 1) * 3 Console.WriteLine("Auftrag Index: {0}", auftrag) If (auftrag >= 0 AndAlso (auftrag + 2) < lines.Length) Then Console.WriteLine("Produkt: {0}", lines(auftrag)) Console.WriteLine("Stück: {0}", lines(auftrag + 1)) Console.WriteLine("Bild: {0}", lines(auftrag + 2)) Else Console.WriteLine("{0} ist eine ungültige Auftragsnummer", auftragText) End If Else Console.WriteLine("{0} ist Keine Zahl", auftragText) End If Next End Sub
Deine versuchte Umwandlung mit ToString() läßt micht vermuten,
Du arbeitest mit Option Strict Off. Das sollste Du tunlichst in "On" -
am besten auf Projektebene - ändern.
Denn ohne richtige Typprüfung forderst Du Fehler heraus.Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Donnerstag, 27. Mai 2010 09:08
Alle Antworten
-
Hi,
Ich habe eine frage, geht das wenn ich jetzt eine textbox habe und ich darin was schreibe das wenn ich das in ein textdokument anfüge ?
zb:
Im Textfile steht :
Bla
Bla
Blub
und das dann unter dem blub als line 4 das was in der Textbox steht darunter dran gesetzt wird ?Ich weiß zwar nicht, ob ich deine Frage richtig verstanden habe aber falls ja, wäre das hier passend.
My.Computer.FileSystem.WriteAllText( "X:\Ordner\Datei.txt", <TextBox>.Text, True)
Damit wird der Inhalt der TextBox an die Datei angehangen.
dann möchte ich das wenn ich bei Auftrag.Text 2 rein schreibe in die Textbox dass er automatisch die lines 4,5 & 6 ausliest und dann eben so weiter sonst müsste ich da 100 mal das bearbeiten.
Öhm. Deine Fragestellung ist ziemlich "komisch".
Wenn Du immer drei Zeilen aus einer Datei lesen willst, wobei die zu lesenden Zeilen abhängig von einer eingegeben Zahl sein sollen, liest dich mal hier ein:
http://msdn.microsoft.com/de-de/library/system.io.streamreader.readline.aspx
http://msdn.microsoft.com/de-de/library/db5x7c0d.aspx
http://msdn.microsoft.com/de-de/library/s2tte0y1.aspx
Dim LineToStart As Int64 Dim LineCount As Int64 = 3 LineToStart = ( <Eingabe> * LineCount ) + 1 For Counter As Int64 = 1 To LineToStart - 1
<StreamReader>.ReadLine() Next Produkt.Text = <StreamReader>.ReadLine() Stück.Text = <StreamReader>.ReadLine() Bild.ImageLocation = <StreamReader>.ReadLine()So in etwas könnte man es machen. Da fehlen aber natürlich noch einige Sachen wie Fehlerbehandlung, wenns gar nicht so viele Zeilen gibt, ...
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort markiert Robert Breitenhofer Donnerstag, 27. Mai 2010 09:08
-
Hallo,
zu 1.) Solange Du an fügen willst, kannst Du die File. AppendText-Methode
oder eine der anderen Append-Methoden verwenden.
Sobald Du allerdings ein fügen willst (z. B. zwischen "Bla" und "Blub")
mußt Du die gesamte Datei neu schreiben.
Solange die Datei von der Größe überschaubar bleibt kannst Du via File. ReadAllLines
alle Zeilen in ein Zeichenketten-Array lesen und am Schluß mittels File.WriteAllLines
wieder in die Datei schreiben (ggf. vorher zur Sicherheit via File.Move umbennen).
Beachte dass unter .NET Textdateien im Standard in UTF Kodierung geschrieben werden.Über das Array kannst Du via Variable und Offset zugreifen.
Wobei Arrays bei Null beginnen, und wenn Deine Auftragsnummer bei eins beginnt,
so mußt etwas Mathematik betreiben. Was in etwa so aussehen könnte:' Hier: Windows Kodierung, wenn nicht UTF-8 Dim lines As String() = File.ReadAllLines("Datei.Txt", Encoding.Default) Dim auftrag As Integer If Integer.TryParse(Auftrag.Text, auftrag) Then ' Auftrag ab 1. mit jeweils 3 Zeilen, Array beginnt bei 0 auftrag = (auftrag - 1) * 3 If (auftrag >= 0 AndAlso (auftrag + 2) < lines.Length) Then Produkt.Text = lines(auftrag) Stück.Text = lines(auftrag + 1) Bild.ImageLocation = lines(auftrag + 2) Else MessageBox.Show("Ungültige Auftragsnummer") End If Else MessageBox.Show("Keine Zahl") End If
(wobei vollkommen ungetestet und aus Deiner Beschreibung zusammengeraten)Gruß Elmar
-
Danke erstmal,
Wenn ich bei deinem code mit auftragsnummer 1 das mache sagt er eben ungültige auftragsnummer ... wenn ich bei der zeile :
auftrag = (auftrag - 1) * 3
mit
auftrag = (auftrag - 0) * 3
ersetze bekomme ich die ersten 3 zeilen ausgelesen, als logische folge kann er aber bei der auftragsnummer 2 nichts mehr finden da 0*3 gleich 0 ist.hier
If Integer.TryParse(Auftrag.Text, auftrag) Then
muss man das ".text" durch ".ToString" ersetzen da wir ja auftrag als Integer festgelegt haben.
jedoch stehe ich gerade an
-
Hallo,
leider hattee ich es unglüclicklich formuliert, als ich "auftrag" zweimal verwendet habe.
Richtiger wäre gewesen: Entweder Me.auftrag.Text, wenn man von einem Steuerelement
ausgeht, oder ein anderer Variablenname für den Integer (z. B. auftragIndex).
Ansonsten ist das durchaus richtig. Integer.TryParse liest einen Text ein und liefert
nur dann Wahr wenn es sich um eine Zahl handelt.
(1 - 1) * 3 => 0, (2 - 1) * 3 => 3, (3 - 1) * 3 = 6 usw.
Der Code so gestaltet, dass er unabhängig von Steuerelementen und Datei funktioniert:
Public Sub AuftragSchleife() Dim lines As String() = {"Bla", "Bla", "Blubb", "2. Bla", "2. BlaBla", "2. Blubb", "3. Bla", "3. Bla", "3. Blubb"} ' Simulierte Eingabe Dim AuftragTexte As String() = {"1", "2", "3", "abc", "0", "-1"} For Each auftragText In AuftragTexte Dim auftrag As Integer If Integer.TryParse(auftragText, auftrag) Then ' Auftrag ab 1. mit jeweils 3 Zeilen, Array beginnt bei 0 auftrag = (auftrag - 1) * 3 Console.WriteLine("Auftrag Index: {0}", auftrag) If (auftrag >= 0 AndAlso (auftrag + 2) < lines.Length) Then Console.WriteLine("Produkt: {0}", lines(auftrag)) Console.WriteLine("Stück: {0}", lines(auftrag + 1)) Console.WriteLine("Bild: {0}", lines(auftrag + 2)) Else Console.WriteLine("{0} ist eine ungültige Auftragsnummer", auftragText) End If Else Console.WriteLine("{0} ist Keine Zahl", auftragText) End If Next End Sub
Deine versuchte Umwandlung mit ToString() läßt micht vermuten,
Du arbeitest mit Option Strict Off. Das sollste Du tunlichst in "On" -
am besten auf Projektebene - ändern.
Denn ohne richtige Typprüfung forderst Du Fehler heraus.Gruß Elmar
- Als Antwort markiert Robert Breitenhofer Donnerstag, 27. Mai 2010 09:08
-
Hallo,
Du solltest doch ein oder zwei Grundlagen pauken! z. B.:
http://www.microsoft.com/germany/msdn/aktuell/news/MicrosoftVisualBasic2008DasEntwicklerbuch.mspxIm obigen Beispiel habe ich die Zuweisungen zur Demonstration durch eine
Konsolenausgabe ersetzt, und die siehst Du in Windows Forms Anwendungen
im Ausgabe Fenster.
Das wiederum in eine Zuweisung an Deine Textboxen (oder was auch immer sonst)
umzuändern, dazu solltest Du selbständig in der Lage sein (zumal es im gestrigen
Beispiel ansatzweise so steht).Gruß Elmar
-
Ja habe ich bereits :D danke
Ich weiß zwar nicht, was Du mit "habe ich bereits" meinst aber ich würde mal sagen: Nö, hast Du nicht. :)
Zumindest gehst du nicht konkrekt auf die Beispiele ein. Das Grundprinzip aus meiner und Elmars erster Antwort ist eigentlich das, was Du brauchst. Die Einzelheiten hängen natürlich stark von deinem restlichen Code ab. Und ohne Grundlagenkenntnisse kommst Du da leider nicht wirklich weit.
Von daher arbeite eines der Beispiele in deinen Code ein, formatier den mal sauber, achte auf Datentypen, ... und wenn es dann noch Probleme gibt, poste bitte den relevanten Codeausschnitt.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Hallo Dullydev,
deine Zeilen lassen mich vermuten, dass so was wie eine Datenbank vor hast?
Wenn es dir also nicht ums Grundprinzip geht wie du selbst Text anfügst etc., dazu hast du ja hier Antworten bekommen, dann liegt dein Glück doch wohl eher in der Datenbank.
Liebe Grüße Stefan -
Hallo Dullydev,
deine Zeilen lassen mich vermuten, dass so was wie eine Datenbank vor hast?
Wenn es dir also nicht ums Grundprinzip geht wie du selbst Text anfügst etc., dazu hast du ja hier Antworten bekommen, dann liegt dein Glück doch wohl eher in der Datenbank.
Liebe Grüße Stefan