Datum einer Datei verändern

Gast #951975
Lesenswert?

Hallo!

Kennt jemand ein Progrämmchen, das das Datum einer Datei verändern kann.
Ich habe es probiert mit der Funktion "FileSetDate" von CBuilder aber es 
hat nicht funkionniert. Die Funktion liefert immer den Fehlercode 87????
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  short age;
  int iFileHandle;
  int error_code;
  age = (1999<<9) | (12<<5)|6;
  age = 0xFFFF;

   if ((iFileHandle = FileOpen("sample.doc", fmOpenRead)) == NULL)
     MessageBox(0,"","error by opening the file",0);
   else
   {
     error_code = FileSetDate(iFileHandle, age);
     if(error_code)
        MessageBox(0,"","FileSetDate error",0);
     FileClose(iFileHandle);
   }
}

MFG
laspalmas
Gast #952005
Lesenswert?

die api Funktion für windows ist SetFiletime.

Bist du dir bei FileSetDate sicher das die Datei offen sein kann? dann 
Beim schliesen wird ja das LastAccessTime neu gesetzt.
Weche Zeit möchtest du überhaupt setzten?
CreationTime, astAccessTime, LastWriteTime ?
Gast #952012
Lesenswert?

hatte ich ja glatt übersehen:

short age;
age = (1999<<9) | (12<<5)|6;
age = 0xFFFF;

das Passt doch alles nicht zusammen? Bei welchem System wird dann die 
Zeit als Short gespeichert? Dann Überschreibt das age = 0xFFFF; die 
andere Berechnung.

(1999<<9) Sollte auch nicht mehr in Short reinpassen.
Gast #952029
Lesenswert?

Danke für die schnelle Antwort.
laut Builderhilfe: Age ist der Zeitstempel, welcher der angegeben Datei 
zugewiesen werden soll.Ich bin davon ausgegangen dass es ein Dos-Datum 
ist.
Beim close bleibt das Datum unverändert.

 Sorry das "age = 0xFFFF;" war nur ein patch habe ich vergessen. Mir war 
wichtig zuerst zu sehen ob sich was tut und est dann kann ich das Datum 
richig einstellen. Ich möchte ein beliebiges Datum reinschreiben.
Ich versuche es mal mit SetFileTime.
Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren