Laden...

Substring von Dateiinhalten

Erstellt von habeKA vor 16 Jahren Letzter Beitrag vor 16 Jahren 2.512 Views
H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren
Substring von Dateiinhalten

Hi,

ja ich bins mal wieder 😁
Habe mich jetzt auch schon bis zu den Windows.Forms gearbeitet.Aber jetzt habe ich mal ne frage(wie immer warscheinlich eine Anfängerfrage).

Ich lese einen String bis zum ende aus und übergebe das ergebnis in eine txt.datei.So mein problem ist das ich aber erst ab Substring(9) das ergebnis übergeben will.

Also das was ich jetzt habe sieht so aus.


private void menuOpen_Click(object sender, System.EventArgs e) 
		{
			if(this.SavedCheck() == true) return;
			else 
			{
				OpenFileDialog ofd = new OpenFileDialog();
				ofd.Filter = "Textdateien (*.txt)|*.txt|"
					+ "Alle Dateien (*.*)|*.*";
				ofd.Title = "Öffnen einer Textdatei";
				ofd.InitialDirectory = Application.StartupPath;
				try 
				{
					if(ofd.ShowDialog() == DialogResult.OK) 
					{
						StreamReader sr = new StreamReader(ofd.FileName);
						txtDatei.Text = sr.ReadToEnd();
						sr.Close();
						this.txtchanged = false;
						this.strFile = ofd.FileName;
						this.SetFormTitle();
					}
				}
				catch(Exception ex) 
				{
					MessageBox.Show(ex.Message, "Texteditor");
				}
			}
		}

mit der console ging das einfach mit


Console.WriteLine(line.Substring(9));

nur wenn ich jetzt Substring in den windwos.forms bereich mit einarbeite erkennt der Substring net. 🙁

Also wie kann es machen das im oberen code erst ab substring(9) in die txt datei übergeben wird.

p.s: Bitte net wieder auf MSDN verweisen da habe ich mich grade 3 stunden durchgewühlt und bin net wirklich schlauer als vor 3 stunden.

MFG

habeKA

There's no place like 127.0.0.1

F
722 Beiträge seit 2005
vor 16 Jahren

Substring ist eine Methode der Klasse String und hat rein gar nichts mit Windows Forms zutun.
Bitte schau sowas in einem Buch nach,
z.b. http://www.galileocomputing.de/openbook/csharp/

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

So habe mir das jetzt angeschaut aber trotzdem kein Ahnung wie ich den substring in


                    if(ofd.ShowDialog() == DialogResult.OK) 
                    {
                        StreamReader sr = new StreamReader(ofd.FileName);
                        txtDatei.Text = sr.ReadToEnd();
                        sr.Close();
                        this.txtchanged = false;
                        this.strFile = ofd.FileName;
                        this.SetFormTitle();
                    }
                }
 

reinbastlen soll X(
ich glaube ich bin einfach zu blöde dafür 🙁

There's no place like 127.0.0.1

4.506 Beiträge seit 2004
vor 16 Jahren

Hallo habeKA,

was möchtest Du denn mit dem Teilstring machen, wo soll er denn "reingebastelt" werden?

Wenn Du den Teilstring als Fenstertitel haben möchtest, dann verwende die Eigenschaft Text Deiner Form. Also in etwa so (je nachdem was Du nun wirklich möchtest):


if(ofd.ShowDialog() == DialogResult.OK)
                    {
                        StreamReader sr = new StreamReader(ofd.FileName);
                        txtDatei.Text = sr.ReadToEnd();
                        sr.Close();
                        this.txtchanged = false;
                        this.strFile = ofd.FileName;
                        this.Text = txtDatei.Text.Substring(9);
                    }
                }

Grüße
Norman-Timo

Edit: Syntaxfehler behoben

A: “Wie ist denn das Wetter bei euch?”
B: “Caps Lock.”
A: “Hä?”
B: “Na ja, Shift ohne Ende!”

738 Beiträge seit 2007
vor 16 Jahren
H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

he norman_timo ich wollte eigentlich die txt.datei die ich öffnen ab Substring(9)
in die txt.Datei.Text übergeben.

There's no place like 127.0.0.1

J
3.331 Beiträge seit 2006
vor 16 Jahren

Hallo habeKA,

ein einfacher Blick in die :rtfm: hätte geholfen, dazu musst Du nicht stundenlang die MSDN durchwühlen.

Du verwendest StreamReader.ReadToEnd(). Das liefert als Ergebnis einen String; und mit dem kannst Du wie gewohnt einen SubString erstellen. Also:

txtDatei.Text = sr.ReadToEnd().Substring(9);

Gruß Jürgen

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

Super dank dir juetho 👍

There's no place like 127.0.0.1

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

So danke an alle sieht jetzt so aus 😁


private void menuOpen_Click(object sender, System.EventArgs e) 
		{

			String line = "";

			if(this.SavedCheck() == true) return;
			else 
			{
				OpenFileDialog ofd = new OpenFileDialog();
				ofd.Filter = "Textdateien (*.txt)|*.txt|"
					+ "Alle Dateien (*.*)|*.*";
				ofd.Title = "Öffnen einer Textdatei";
				ofd.InitialDirectory = Application.StartupPath;
				
			
				try 
				{
					if(ofd.ShowDialog() == DialogResult.OK) 
					{
						StreamReader sr = new StreamReader(ofd.FileName);
						while ((line = sr.ReadLine()) != null)
						{  // alternativ
							txtDatei.Text = sr.ReadLine().Substring(9);
						}	 //txtDatei.Text = sr.ReadToEnd().Substring(9); geht auch
						sr.Close();
						this.txtchanged = false;
						this.strFile = ofd.FileName;
						this.SetFormTitle();

					}
				}
				catch(Exception ex) 
				{
					MessageBox.Show(ex.Message, "Texteditor");
				}
			}
		}

jetzt zeigt er zwar nur die letzte zeile der geöffneten datei an aber das bekomme ich auch noch hinn und wenn net frage ich einfach nochmal hier 😁

There's no place like 127.0.0.1

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren
String übergabe ?

Huhu,

ich bins mal wieder 😄.
Also folgendes ich lese eine Text-Datei zeilenhaft aus und lasse die ausgelsene zeile in einer neue Textdatei ab Substring(9) übergeben.
Jetzt mein Problem. Aus einem nicht ersichtlichen Grunde schreibt er immer nur die letzte Zeile aus der Original TXT.Datei in die neue TXT.Datei.

Der Code sieht so aus :


private void menuOpen_Click(object sender, System.EventArgs e) 
        {

            String line = "";

            if(this.SavedCheck() == true) return;
            else 
            {
                OpenFileDialog ofd = new OpenFileDialog();
                ofd.Filter = "Textdateien (*.txt)|*.txt|"
                    + "Alle Dateien (*.*)|*.*";
                ofd.Title = "Öffnen einer Textdatei";
                ofd.InitialDirectory = Application.StartupPath;
                
            
                try 
                {
                    if(ofd.ShowDialog() == DialogResult.OK) 
                    {
                        StreamReader sr = new StreamReader(ofd.FileName);
                        while ((line = sr.ReadLine()) != null)
                        {  
                            txtDatei.Text += sr.ReadLine().Substring(9);
                        }     //txtDatei.Text = sr.ReadToEnd().Substring(9); geht auch
                        sr.Close();
                        this.txtchanged = false;
                        this.strFile = ofd.FileName;
                        this.SetFormTitle();

                    }
                }
                catch(Exception ex) 
                {
                    MessageBox.Show(ex.Message, "Texteditor");
                }
            }
        } 

alternativ kann mana auch

txtDatei.Text += sr.ReadLine().Substring(9);

mit

txtDatei.Text = sr.ReadToEnd().Substring(9);

ersetzten.(ok schleife müsste auch noch weg) Aber dann wird nur von de rerstenzeile die ersten neuen zeichen weggelassen.

Also so sieht die original TXT.Datei aus

123456789Text
123456778Text2
123456567Text3

und das gibt er mir aus wenn ichd as mit der schleife übergebe.

Text3

Soll aber so aussehn

Text
Text2
Text3

Nur ich habe keine Ahnung warum der das so nicht ausgibt.
Debugger auch durchlaufen lassen nix gefunden .
Werte sind auch alle ok. ´
Vll weiss ja wer was da falsch ist

MFG

HabeKA

There's no place like 127.0.0.1

P
992 Beiträge seit 2007
vor 16 Jahren

Hallo habeKA,

die Zeile in der Schleife müsste eigentlich so aussehehen:


txtDatei.Text += line.Substring(9);

Was ist txtDatei für ein Objekt?

E
395 Beiträge seit 2007
vor 16 Jahren

warum liest du die zeile nicht in der whileschleife ein und schreibst ihn im selben athemzug in die neue datei


                        StreamReader sr = new StreamReader(ofd.FileName);
                        StreamWriter sw = new StreamWriter(Pfad\name.endung);
                        while (!sr.EndOfFile)
                        {  
                            sw.WriteLine(sr.ReadLine().?ToString()?.Substring(9); 
                        }
                        sr.Close();
                        sw.Close();

!Achtung ungeteste schreibfehler nicht ausgeschlossen!

..... auch wen ich net der erste bin der antwortet und es bereits verschoben wurd xD

MfG Paul

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

Danke euch .

Aber


StreamReader sr = new StreamReader(ofd.FileName);
                        StreamWriter sw = new StreamWriter(Pfad\name.endung);
                        while (!sr.EndOfFile)
                        {  
                            sw.WriteLine(sr.ReadLine().?ToString()?.Substring(9); 
                        }
                        sr.Close();
                        sw.Close();

so würde ich das auch machen wenn ich ind er console arbeite.
Nur ich schreibe in eine TextBox und ich habe kA was fürn pfad die TextBox hat.
Wenn ich den namen der TextBox als Pfad angebe geht das net.
Aber danke ich werde mal weiterschaun 👍
und SORRY wegen dem falschen Post (war nicht mit absicht) X(

There's no place like 127.0.0.1

P
992 Beiträge seit 2007
vor 16 Jahren

Wenn du in eine textbox schreibst musst du natürlich TextBox.Multiline = true setzen, sonst wird immer nur eine Zeile angezeigt.

183 Beiträge seit 2004
vor 16 Jahren

Hallo habeKA,

der Name ist Programm 8)

using(StreamReader sr = new StreamReader(ofd.FileName))
{
   while (!sr.EndOfFile)
   {  
      txtDatei.Text += sr.ReadLine().Substring(9);
   }
}

BTW: TextBox.Multiline = true nicht vergessen

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

Original von él toro
Hallo habeKA,

der Name ist Programm 8)

ja genau ! aber jeder fengt mal klein an xD

There's no place like 127.0.0.1

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo habeKA,

aber jeder fengt mal klein an

klar, aber beachte unbedingt:

Auf der anderen Seite ist myCSharp.de kein reines Anfängerforum. Wir setzen grundlegende Kenntnisse voraus, zum Beispiel über den Aufbau von Windows-Forms-Anwendungen. Solche grundlegenden Kenntnisse erwirbt man leichter und besser, wenn man ein Buch durcharbeitet. Anfänger sollten daher akzeptieren, wenn sie bei zu grundlegenden Fragen auf das Selbststudium verwiesen werden.

Aus
>

herbivore

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

8o naja bis jetzt habt ihr ja noch alle fragen beantwortet.

Ok ich werde mich mal mehr mit --> :rtfm: befassen.

Auserdem kennste sicher doch :

Community-Regeln oft zetiert, kaum gelesen und nie beachtet 🤔
in dem sinne DANKE erstmal für die hilfe und ich poste erst wieder wenn ich was mehr an Grundwissen habe

There's no place like 127.0.0.1

183 Beiträge seit 2004
vor 16 Jahren

Und das werden wir auch weiter machen da wir Anfängern gegenüber offen sind, aber du musst schon ein bisschen mehr Eigeninitiative an den Tag legen. Schließlich hätten dich aus meiner Sicht die vorhergehenden Antworten der Lösung schon näher bringen müssen ...

BTW: Hat dir der Codeschnipsel geholfen?

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

Ja hat mich weitergebracht und nochmals DANKE 👍

Jetzt muss ich nur noch schaun das die ausgabe untereinander in der Textbox erscheint und net nebeneinander.

Also so:
Text
Text2

und net so

TextText2

aber das bekomme ich diesmal selbst hin 😉 auch wenn ich nen bissel mehr nachdenken muss 🤔 ^^

There's no place like 127.0.0.1

183 Beiträge seit 2004
vor 16 Jahren

Einfach dort, wo du in die Textbox schreibst nen Zeilenumbruch einfügen 👍

So einfach wie möglich, aber nicht einfacher. [Albert Einstein]

take a look at
* baer-torsten.de
* codinghints

E
395 Beiträge seit 2007
vor 16 Jahren

ich habe gerade bemerkt das es hier ja um ein schreiben in eine textbox geht....

dachte du woltest einfach nur von datei A in datei B schreiben^^
warum geht keine richt text box?!

MfG Paul

H
habeKA Themenstarter:in
90 Beiträge seit 2007
vor 16 Jahren

😁 herbivore hat recht bücher helfen weiter 👅

habs mit Environment.NewLine. gemacht und danke el toro dank dir wuste ich auch wo ich das hinn setzten muss 👍

There's no place like 127.0.0.1

N
53 Beiträge seit 2006
vor 16 Jahren

tach,

ist ja niedlich euer talk über anfänger und so.

wie arrogant muss man eigentlich sein, um aus einem 4zeiler den wissensgrad eines menschen ermitteln zu können.

mal ehrlich, wir sind doch alle nur hier im forum weil wir irgendwas nicht wissen und hoffen, das uns hier geholfen wird. auch die, die gern mal auf "Anfänger" herabschauen.

man kann alles lesen, aber nicht alles wird auf anhieb verstanden. es giebt viele gründe dafür. ein gespräch mit anderen hilft da immer. es werden einfach andere blickwinkel aufgezeigt, die ein nicht verstandenes problem plötzlich ganz klar erscheinen lassen.

in einem solchen forum soll ein austausch von wissen stattfinden und kein wettbewerb, wer der grösste ist.

MfG nowanet

**:::

49.485 Beiträge seit 2005
vor 16 Jahren

Hallo nowanet,

mir ist nicht klar, wie du aus einem 4zweiler ermitteln willst, wie arrogant jemand ist. Davon, dass es hier um die Kenntnisse gar nicht geht, sondern nur um die Art der Aneignung derselben, scheinst du mir hier den gleichen Fehler zu machen, den du anderen vorwirfst. 🙂 Keiner hat hier irgendetwas gegen Anfänger gesagt.

herbivore