cewiethemaster
Goto Top

C-Sharp in txt schreiben und daraus lesen

Hi.

Ich will eine TXT Datei einlesen, doch ich hab ein Problem.

Mein Code:


Klasse: TextDatei
using System;
using System.IO;

class TextDatei
{
    ///<summary>
    /// Liefert den Inhalt der Datei zurück.
    ///</summary>
    ///<param name="sFilename">Dateipfad</param> 
    public string ReadFile(String sFilename)
    {
        string sContent = "";  

        if (File.Exists(sFilename))
        {
            StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default);
            sContent = myFile.ReadToEnd();
            myFile.Close();
        }
        return sContent;
    }

    ///<summary>
    /// Schreibt den übergebenen Inhalt in eine Textdatei.
    ///</summary>
    ///<param name="sFilename">Pfad zur Datei</param> 
    ///<param name="sLines">zu schreibender Text</param> 
    public void WriteFile(String sFilename, String sLines)
    {
        StreamWriter myFile = new StreamWriter(sFilename);
        myFile.Write(sLines);
        myFile.Close();
    }

    ///<summary>
    /// Fügt den übergebenen Text an das Ende einer Textdatei an.
    ///</summary>
    ///<param name="sFilename">Pfad zur Datei</param> 
    ///<param name="sLines">anzufügender Text</param> 
    public void Append(string sFilename, string sLines)
    {
        StreamWriter myFile = new StreamWriter(sFilename, true);
        myFile.Write(sLines);
        myFile.Close();
    }

    ///<summary>
    /// Liefert den Inhalt der übergebenen Zeilennummer zurück.
    ///</summary>
    ///<param name="sFilename">Pfad zur Datei</param> 
    ///<param name="iLine">Zeilennummer</param> 
    public string ReadLine(String sFilename, int iLine)
    {
        string sContent = "";  
        float fRow = 0;
        if (File.Exists(sFilename))
        {
            StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default);
            while (!myFile.EndOfStream && fRow < iLine)
            {
                fRow++;
                sContent = myFile.ReadLine();
            }
            myFile.Close();
            if (fRow < iLine)
                sContent = "";  
        }
        return sContent;
    }

    /// <summary>
    /// Schreibt den übergebenen Text in eine definierte Zeile.
    ///</summary>
    ///<param name="sFilename">Pfad zur Datei</param> 
    ///<param name="iLine">Zeilennummer</param> 
    ///<param name="sLines">Text für die übergebene Zeile</param> 
    ///<param name="bReplace">Text in dieser Zeile überschreiben (t) oder einfügen (f)</param> 
    public void WriteLine(String sFilename, int iLine, string sLines, bool bReplace)
    {
        string sContent = "";  
        string delimiterstring = { "\r\n" };  

        if (File.Exists(sFilename))
        {
            StreamReader myFile = new StreamReader(sFilename, System.Text.Encoding.Default);
            sContent = myFile.ReadToEnd();
            myFile.Close();
        }

        string sCols = sContent.Split(delimiterstring, StringSplitOptions.None);

        if (sCols.Length >= iLine)
        {
            if (!bReplace)
                sCols[iLine - 1] = sLines + "\r\n" + sCols[iLine - 1];  
            else
                sCols[iLine - 1] = sLines;

            sContent = "";  
            for (int x = 0; x < sCols.Length - 1; x++)
            {
                sContent += sCols[x] + "\r\n";  
            }
            sContent += sCols[sCols.Length - 1];

        }
        else
        {
            for (int x = 0; x < iLine - sCols.Length; x++)
                sContent += "\r\n";  

            sContent += sLines;
        }


        StreamWriter mySaveFile = new StreamWriter(sFilename);
        mySaveFile.Write(sContent);
        mySaveFile.Close();
    }
}

Form: Form1
public partial class Form1 : Form
    {


       public Form1()
        {
            InitializeComponent();
        }

       private void Form1_Load(object sender, EventArgs e)
       {
           TextDatei c_textdatei = new TextDatei();
       }

       private void timeResync_Tick(object sender, EventArgs e)
       {
           //Einlesen einer Datei
           string fs = c_textdatei.ReadFile(@"c:\text.txt");  
       }
    }

Er sagt immer, dass er C_textdatei nciht kennt face-sad

Was ist falsch?

LG

Content-ID: 172018

Url: https://administrator.de/contentid/172018

Ausgedruckt am: 22.11.2024 um 07:11 Uhr

Berrnd
Berrnd 24.08.2011 um 21:38:49 Uhr
Goto Top
Hi,

na wenn du dem Compiler nicht sagst wer c_textdatei ist, dann weiß er das auch nicht. ;)

Ich denke mal c_textdatei sollte ein Objekt deiner Klasse TextDatei sein? Also einfach an entsprechender Stelle ein
TextDatei c_textdatei = new TextDatei();
Gruß - Bernd
cewiethemaster
cewiethemaster 24.08.2011 um 22:00:29 Uhr
Goto Top
Hi.

ich hab doch in Form1 schon

private void Form1_Load(object sender, EventArgs e) 
11.
       { 
12.
           TextDatei c_textdatei = new TextDatei(); 
13.
       } 
1002-btl
1002-btl 24.08.2011 um 22:31:39 Uhr
Goto Top
Hallo,

liegen beide Ausschnitte des Quellcodes im selben Namespace?
Im Quellcode, den Du gepostet hast, ist das nicht sicher erkennbar.

Gruß
cewiethemaster
cewiethemaster 24.08.2011 um 22:33:42 Uhr
Goto Top
Ja, in Form1 liegen beide im selben namSpace...
noxcry
noxcry 25.08.2011 um 00:38:21 Uhr
Goto Top
Also wenn du in "private void timeResync_Tick" aus einem Objekt lesen willst, dass du in einer anderen Methode erstellt hast, dann ist es klar, dass es nicht geht.
Entweder du übergibtst der "private void timeResync_Tick" die in "Form1_Load" erstellte c_textdatei, oder du definierst das Objekt TextDatei als Membervariable, weißt sie in "Form1_Load" zu und kannst sie somit dann aus "private void timeResync_Tick" lesen.
lg
nox
cewiethemaster
cewiethemaster 25.08.2011 um 08:00:42 Uhr
Goto Top
Hi.

Danke es funtkiniert ;)

Nun hab ich ein weiteres Problem.

Ich will jetzt mittels

private void cmdSubmit_Click(object sender, EventArgs e)
       {
           //Text an eine Datei Anhängen
           TextDatei c_textdatei = new TextDatei();
           c_textdatei.Append(@"C:\test.txt", + Environment.NewLine + txtMessage.Text);  
       }

mit einem Zeilenumbruch einen Text an die datei anhängen.
Da meckert er allerdings:

Fehler 1 Der Operator "+" kann nicht auf einen Operanden vom Typ "string" angewendet werden.

und verweißt auf + Environment.NewLine

Was kann ich da machen?


EDIT: Ich habs jetzt so gelöst

private void cmdSubmit_Click(object sender, EventArgs e)
       {
           //Text an eine Datei Anhängen
           TextDatei c_textdatei = new TextDatei();
           string text = Environment.NewLine + txtMessage.Text;
           c_textdatei.Append(@"C:\test.txt", text);  
       }