Bug in GetCreationTime (VB.NET 2.0) ?

05/04/2008 - 12:41 von Jo Neigel | Report spam
Hi group,
ich prüfe in einem Logbuch ob die Logdatei von heute ist. Wenn nicht
wird sie neu angelegt.
Irgend etwas stimmt aber mit dem Erstelldatum nicht.

Obwohl heute der 5.4. ist, wird das Erstelldatum auf den 2.4. gesetzt.

Codesnip:

If Format(File.GetCreationTime(strPath), "yyyyMMdd") < Format(Now,
"yyyyMMdd") Then
File.Delete(strPath)
End If

sw = File.AppendText(strPath)
sw.WriteLine(strError)
sw.Flush()
sw.Close()
-

Der Now-Befehl liefert korrekt den 5.4.
Der Befehl GetCreationTime liefert den 2.4.
Im Explorer wird das Erstelldatum auch mit 2.4. angezeigt!? Also kein
Problem von GetCreationTime.
Lösche ich die Datei mit dem Explorer, wird das Erstelldatum von der
o.a. Routine wieder auf 2.4. gesetzt!

Nachtrag:
Jetzt habe ich mal die Datei mit dem Explorer neu angelegt, dann
stimmt das Erstelldatum.
Dadurch klappt nun meine Routine wieder; sie legt die Datei nun auch
mit 5.4. an.
Vielleicht hat sich dadurch das Problem erledigt obwohl mir die
Ursache unklar ist.
Die Frage ist auch, ob es morgen noch funktioniert

Macht Euch deshalb keine Mühe (es funktioniert ja jetzt),
aber wenn jemand eine Idee wg. der Ursache hat, wàre es trotzdem
interessant.

Gruß jo
 

Lesen sie die antworten

#1 Thorsten Doerfler
05/04/2008 - 13:19 | Warnen spam
Jo Neigel schrieb:
ich prüfe in einem Logbuch ob die Logdatei von heute ist. Wenn nicht
wird sie neu angelegt.
Irgend etwas stimmt aber mit dem Erstelldatum nicht.



Das Erstelldatum wird in Ordnung sein, nur wird Dein Code fehlerhaft sein.

Obwohl heute der 5.4. ist, wird das Erstelldatum auf den 2.4. gesetzt.

Codesnip:

If Format(File.GetCreationTime(strPath), "yyyyMMdd") < Format(Now,
"yyyyMMdd") Then
File.Delete(strPath)
End If



Warum zum Henker wandelst Du das Datum erst in eine Zeichenfolge um,
wenn Du alleine den Datumswert vergleichen möchtest? Das ist völliger
Nonsens und führt wohl dazu, dass die Datei gar nicht gelöscht wird,
da der Vergleich False ergibt. Vergleiche das Datum direkt als DateTime:

If File.GetCreationTime(strPath) < Now Then
File.Delete(strPath)
End If

Thorsten Dörfler
Microsoft MVP Visual Basic

vb-hellfire visual basic faq | vb-hellfire - einfach anders
http://vb-faq.de/ | http://www.vb-hellfire.de/

Ähnliche fragen