Autor Beitrag
TheSoul
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Mi 03.02.10 09:43 
Hallo!

Ich hab überall gesucht, aber ich hab nirgendwo eine verständliche Anleitung für c# gefunden.

Ich brauche das Änderungsdatum von Dateien. Dateien sollen im Programm nur geladen werden, wenn sie neuer als die bereits geladene Datei ist. Aber wie kann man im C# herausfinden, wann eine Datei zum letzten Mal geändert wurde?

Mein bisheriger Testversuch ist gescheitert:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        private void button2_Click(object sender, EventArgs e)
        {
            FileInfo Test = new FileInfo(@"C:\xml\Konfig.xml");
            FileInfo Test2 = new FileInfo(@"C:\cml\test.xml");
            if (Test.LastAccessTime.Minute > Test2.LastAccessTime.Minute)
            {
                MessageBox.Show("konfig.xml ist neuer");

            }
            else
            {
                MessageBox.Show("test.xml ist grösser");
            }
        }

_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen.
Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 03.02.10 10:16 
Hallo,

da kommt zunächst mein Standardvorschlag: in der SDK-Doku/MSDN/Hilfe unter "Klasse - Alle Member" nachlesen, was es denn so gibt. Dann stolperst du bei FileInfo schnell über die folgende Eigenschaft:
Zitat:
Ruft den Zeitpunkt des letzten Schreibzugriffs auf die aktuelle Datei oder das aktuelle Verzeichnis ab ...

Zusätzlich machst du noch den Fehler, dass du nur die Minuten-Angabe vergleichst. Es handelt sich um einen DateTime-Wert, der insgesamt verglichen werden muss.

Gruß Jürgen
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Mi 03.02.10 10:30 
Wie kann ich es als ganzes nehmen? Funktioniert der Vergleich wirklich nur mit den grösser/ kleienr als zeichen?

_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen.
Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 03.02.10 11:33 
user profile iconTheSoul hat folgendes geschrieben Zum zitierten Posting springen:
Wie kann ich es als ganzes nehmen? Funktioniert der Vergleich wirklich nur mit den grösser/ kleienr als zeichen?

Nein, nicht nur. Es geht auch mit DateTime.Compare oder DateTime.CompareTo. Aber ich gebe dir recht: Es steht nirgends geschrieben, dass es auch einfach mit > bzw. < geht.

Gruß Jürgen
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Mi 03.02.10 11:52 
Danke für deine Hilfe Jürgen

Mein letzter Stand:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        private void button2_Click(object sender, EventArgs e)
        {
            FileInfo Test = new FileInfo(@"C:\xml\Konfig.xml");
            FileInfo Test2 = new FileInfo(@"C:\cml\test.xml");
            if (Test2.LastWriteTime.CompareTo(Test.LastWriteTime) == -1)
            {
                MessageBox.Show("konfig.xml ist neuer");
            }
            else
            {
                MessageBox.Show("test.xml ist neuer");
            }

        }


funktioniert leider immernoch nicht... :(

_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen.
Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 03.02.10 12:01 
Was funktioniert den nicht?
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Mi 03.02.10 12:05 
Es kommt, unabhängi vom Änderungsdatum, immer die gleiche Meldung "konfig.xml" ist neuer.

_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen.
Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 03.02.10 12:18 
ausblenden C#-Quelltext
1:
2:
3:
4:
FileInfo file1 = new FileInfo(@"C:\test1.txt");
            FileInfo file2 = new FileInfo(@"C:\test2.txt");

            Console.WriteLine(file1.LastWriteTime.CompareTo(file2.LastWriteTime));


Funktioniert einwandfrei bei mir.

Ausgabe 1: file1 ist neuer.
Ausagbe 0: Letzter Schreibzugriff war zur gleichen Zeit.
Ausgabe -1: file1 ist älter.

Ich denke dein Test ist falsch!
TheSoul Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 73
Erhaltene Danke: 2

Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
BeitragVerfasst: Mi 03.02.10 12:25 
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
        private void button2_Click(object sender, EventArgs e)
        {
            FileInfo Test = new FileInfo(@"C:\xml\Konfig.xml");
            FileInfo Test2 = new FileInfo(@"C:\xml\test.xml"); //hier war der Rechtschreibefehler
            if (Test2.LastWriteTime.CompareTo(Test.LastWriteTime) == -1)
            {
                MessageBox.Show("konfig.xml ist neuer");
            }
            else
            {
                MessageBox.Show("test.xml ist neuer");
            }

        }


Es war ein kleiner Rechtschreibefehler. Danke für die Hilfe

_________________
Fluchen ist die einzige Sprache, die alle Programmierer wirklich beherrschen.
Ich würd so gern die Welt verändern, aber Gott gibt mir den Quellcode nicht
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Mi 03.02.10 12:34 
Aber was anderes... ich würde eine Routine schreiben, die die Konfiguration an sich vergleicht.. nicht das letzte Schreibdatum. Dies könnte ja unter umständen verschieden sein.. die Konfiguration aber gleich.

Damit hättest du nämlich dann auch eine Methode die es dir erlaubt beim Beenden der Anwendung oder des KonfigurationsForm zu überprüfen ob der Benutzer was geändert hat und ihn dementsprechend fragen ob er die Änderungen übernehmen will etc.

Aber vlt. lautet dein Auftrag ja wieder genau: Überprüfe den letzten Schreibzugriff ;)