Entwickler-Ecke

IO, XML und Registry - Datum als Dateiname ausgeben


grisu2611 - Sa 03.11.07 00:06
Titel: Datum als Dateiname ausgeben
Hallo ich bins wieder....

ich hab da mal wieder ein problem....

möchte das aktuelle Datum mit Uhrzeit in meinem Dateinamen abspeichern und hab da mal zum probieren das hier gemacht aber es will nicht! Muss dabei sagen in einem Beispiel Programm läuft es!


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace TestMesskarte
{
    public partial class Form1 : Form
    {
        string dateiNameTxtBox = "hilfe";
        string spannungSpeichernInDatei = "13,5";
        string rechtsLinksLaufMotor = "Linkslauf";
        public DateTime date;

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StreamWriter schreibenInDatei = File.CreateText(@"c:\\temp\" + dateiNameTxtBox + "_" + date.ToString("T") + ".txt");

            schreibenInDatei.WriteLine("\r\n%Prüfspannung:          " + spannungSpeichernInDatei + " V \r\n");
            schreibenInDatei.WriteLine("%Laufrichtung des Motors: " + rechtsLinksLaufMotor + "\r\n");
            schreibenInDatei.WriteLine("%Zeit[s] Spannung[V] Strom[A] Drehmoment[Nm]");
            schreibenInDatei.WriteLine("%===========================================");
            schreibenInDatei.WriteLine();
            schreibenInDatei.Close();
            
        }
    }
}


bekomme dann die aussage: das angegebene Dateiformat wird nicht unterstützt!

Hilfe!

Danke Frank


grisu2611 - Sa 03.11.07 01:14

hab mal weiter geforscht....

bin jetzt schon so weit:


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Globalization;

namespace TestMesskarte
{
    public partial class Form1 : Form
    {
        string dateiNameTxtBox = "hilfe";
        string spannungSpeichernInDatei = "13,5";
        string rechtsLinksLaufMotor = "Linkslauf";
        public DateTime dt = DateTime.Now;

        string date = dt.ToString("s", DateTimeFormatInfo.InvariantInfo);

        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            StreamWriter schreibenInDatei = File.CreateText(@"c:\\temp\" + dateiNameTxtBox + "_" + date + ".txt");

            schreibenInDatei.WriteLine("\r\n%Prüfspannung:          " + spannungSpeichernInDatei + " V \r\n");
            schreibenInDatei.WriteLine("%Laufrichtung des Motors: " + rechtsLinksLaufMotor + "\r\n");
            schreibenInDatei.WriteLine("%Zeit[s] Spannung[V] Strom[A] Drehmoment[Nm]");
            schreibenInDatei.WriteLine("%===========================================");
            schreibenInDatei.WriteLine();
            schreibenInDatei.Close();
            
        }
    }
}


bekomme aber immer noch fehler:
Fehler 1 Ein Feldinitialisierer kann nicht auf das nicht statische Feld bzw. die nicht statische Methode oder Eigenschaft "TestMesskarte.Form1.dt" verweisen.

und

Warnung 2 Das Zugreifen auf einen Member auf "TestMesskarte.Form1.dt" kann zu einer Laufzeitausnahme führen, da es sich hierbei um ein Feld einer Marshal-by-reference-Klasse handelt.

Hilfe?!

Benutze ich jetzt überhaupt das richtige?
Danke Frank


Christian S. - Sa 03.11.07 13:57

Der erste Fehler ist doch eigentlich selbsterklärend. Du initialisierst das Feld "date", indem Du auf das Feld "dt" zugreifst. Das ist verboten. Wenn Du das beim Erstellen der Klasse machen willst, mach es im Konstruktor. Allerdings brauchst Du für das Datum eigentlich gar kein Feld, eine lokale Variable in der Methode sollte reichen.

Die Warnung habe ich noch nie gesehen, aber ich würde wetten, dass die verschwindet, wenn Du den Fehler behebst ;-)


grisu2611 - Sa 03.11.07 14:18

Danke....aber....

habe es jetzt so geändert und komme trotzdem nicht weiter...


C#-Quelltext
1:
StreamWriter schreibenInDatei = File.CreateText(@"c:\\temp\" + dateiNameTxtBox + "_" + vorKommaZahl + "_" + dt.ToString("s", DateTimeFormatInfo.InvariantInfo) + ".txt");                    


bekomme jetzt den Fehler:

Das angegebene Pfadformat wird nicht unterstützt!


Christian S. - Sa 03.11.07 14:20

Du escapest den ersten Backslash, was Du aber IIRC nicht brauchst, wenn ein @ vorm String steht.


grisu2611 - Sa 03.11.07 20:52

alles klar wer lesen kann ist klar im vorteil!!!

hier jetzt so wie ich es haben wollte und wie es auch funktioniert!


C#-Quelltext
1:
2:
3:
string dateTime = DateTime.Now.ToString("ddMMMyyyyHHmmss");

 StreamWriter schreibenInDatei = File.CreateText(@"c:\temp\" + dateiNameTxtBox + "_" + vorKommaZahl + "k" + nachKommaZahl + "_" + dateTime + ".txt");


so schönen abend noch!