Autor |
Beitrag |
TheSoul
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: 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:
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
      
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
|
Verfasst: 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 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: 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
      
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
|
Verfasst: Mi 03.02.10 11:33
TheSoul hat folgendes geschrieben : | 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 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mi 03.02.10 11:52
Danke für deine Hilfe Jürgen
Mein letzter Stand:
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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mi 03.02.10 12:01
Was funktioniert den nicht?
|
|
TheSoul 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: Mi 03.02.10 12:18
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 
      
Beiträge: 73
Erhaltene Danke: 2
Win 95, Win 98, WIN 2000, Win XP, Win Vista, Win 7
Visual C#
|
Verfasst: Mi 03.02.10 12:25
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"); 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
      
Beiträge: 1012
Erhaltene Danke: 24
Windows XP
C#, Visual Studio
|
Verfasst: 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 
|
|