[C#]Text-Datei überschreiben

MrMinister

Newbie
Registriert
Juni 2010
Beiträge
4
Hallo zusammen,

Erster Post,und direkt Fragen :D
Ist nicht der beste einstieg,aber leider verzweifle ich langsam an meinem Problem.

Folgende situation:

habe ein APP in C# geschrieben,welches einen OpenFileDialog besitzt,der eine Text-Datei in ein vorhandenes DataGrid einliest(eine art Tabelle,die Columnen und Rows beinhaltet,die durch '\t' getrennt sind)..

Eingelesen wird es durch folgenen Code:
Code:
StreamReader myFile = new StreamReader(path);
                    // Die erste 66 Zeilen überspringen----Skip first 66 lines
                    for (int i = 0; i < 66; i++) { myFile.ReadLine(); }
                    string[] values = myFile.ReadLine().Split('\t');
                    while (values != null)
                    {
                        int row = dataGridView1.Rows.Add();
                        for (int i = 0; i < values.Length - 1; i++)
                        {
                            dataGridView1.Rows[row].Cells[i].Value = values[i];
                        }
                        values = myFile.ReadLine().Split('\t');
                    }

Es wird wunderbar in meinem DataGrid angezeigt,und kann auch bearbeitet werden.

Nun mein Problem.

ich will es per Button Speichern.
habe eine neue Class erstellt,wo folgender Code drin steht:
Code:
public static void ToText(this DataGridView d, string filename)
        {
            StreamWriter myFile = new StreamWriter(filename);

            for (int i = 0; i < d.Rows.Count - 1; i++)
                for (int j = 0; j < 67; i++)
                  
            myFile.Write('\t');
            myFile.NewLine = "\n";
            myFile.WriteLine();
            myFile.Close();
        }
Mit dem ergebnis,das mir eine LEERE textdatei erstellt wird,die so lange "TABS" und "NewLines" erstellt,bis der Festplattenspeicher zu ende ist(getesteter weise :evillol: )

Ich hoffe,ihr könnt mir ein bißchen mit meinem Problem helfen.Ein Code-Beispiel wäre sehr hilfreich.

Die zu erstellende Detei soll von einem Linux-System gelesen werden.Dementsprechend "newLine = '\n';

Danke schonmal im vorraus.

Mfg

MM

Edit: Ich sollte wohl lieber erwähnen,das ich Totaler Anfänger in der C#-Programmierung bin.
Deshalb hatte ich auch um ein Code beispiel gebeten. :)
 
Zuletzt bearbeitet:
das liegt daran dass j immer < 67 ist (Endlosschleife); du inkrementierst i, anstelle von j ;)
 
Code:
for (int i = 0; i < d.Rows.Count - 1; i++)
                for (int j = 0; j < 67; i++)

vielleicht solltest du in der 2ten zeile das i durch ein j ersetzen

^^ mist zu spät
 
Achsoooooo....

in meinem "einlese-Code" war das eigentlich die methode,um die ersten 66 Zeilen der Datei zu überspringen,da dort auch Text steht,der aber nicht bearbeitet werden darf.

da hatte ich gedacht,das es umgekehrt auch so sein muss/kann.Habe nämlich den Einlese-Code einfach in den Ausgabe-Code kopiert.

Okay..dann bin ich schonmal einen großen schritt weiter.
Danke schonmal dafür.
Und wie müsste/sollte es aussehen,damit er die ersten 66 Zeilen überspringt in der datei und erst dann anfängt die datei zu überschreiben ?

Mfg,

MM
 
Auf jeden fall schonmal ein GROSSES DANKE an euch,wegen der Hilfestellung.

Ich bin einen Großen schritt weiter..

Er erstellt schonmal eine TextDatei,die "nur" 93kb groß ist.
Diese ist zwar leer,aber hält sich schön im normalbereich auf.

Allerdings schreibt er kein einziges Wort aus meinem DataGrid dort hinein..
Aber auch das lässt sich sicherlich regeln.


Danke nochmals für die ansätze und hilfestellungen.

Mfg

MM
 
Hallo toeffi

mein momentaner" Code zum Schreiben der Datei sieht wie folgt aus:

Code:
StreamWriter myFile = new StreamWriter(filename);

            for (int i = 0; i < d.Rows.Count - 1; i++)
                for (int j = 0; j < 67; j++)
            
            myFile.WriteLine('\t');
            myFile.NewLine = "\n";
            myFile.Close();

in diesem Code kann ich ihm wenigstens schonmal sagen,das er lesen soll wie viele Zeilen da sind..

das " myFile.WriteLine('\t'); " erzeugt eine Leere datei die aus REINEN Tab-zeilen besteht.

schreibe ich myFile.WriteLine(filename + '\t'); erzeugt er eine Datei mit dem Namen der Datei mit jeweils EINEM(1) TAB nach jedem Wort.Auch 1431 an der zahl(so viele zeilen besitzt mein DataGrid)..

Mein nächster schritt besteht nun daraus,herauszufinden,wie er die wörter aus dem DataGrid liest,und in meine Text-Datei schreibt.

Nur leider sind meine C# skills knapp unter Anfänger.
Dadurch ist es für mich auch so schwer,da eine lösung zu bekommen.Sei es aus eigener Kraft,noch von den beispielen anderer Sites (danke nochmals Thax für den Link)..
und per Copy and Paste funktioniert auch nichts,da ich nicht ansatzweise wüsste,welche zeilen Code Wie und WO in meinen Code zu fummeln.

Mfg,

MM
 
@MrMinister: Und niemals aufgeben, du musst versuchen deine Frage zu formulieren und dann einfach mal bei google deine Stichworte einzugeben, da findest du sicherlich was und wenn du das probiert hast, aber etwas nicht verstanden hast, kannst du immernoch hier fragen. Aber versuchen auf Mitleidstour zu machen hilft dir hier nicht weiter, wobei wenn du Glück hast, hilft es dir hier weiter. ;) Ich denke du kriegst das mit dem Link von HansDampf super hin, du kannst uns dann auch gerne deine Lösung zeigen und wir diskutieren sie hier.
 
Zurück
Oben