Forum
Grundkurs
»Introduktion
»Snabbguide
»Komponenter
»Händelser
»Strängar
»Räkna med Delphi »Egna
typer
»Selektion
»Iteration
»Menyer
»Funktioner
»Arraystrukturer
Tips & Tricks
»Nya tips
»Blandat
»Databaser
»Filer
»Forms
»Grafik
»Internet
»Komponenter
»Matematik
»Multimedia
»Objekt/ActiveX
»Skrivare
»Strängar
»System
»Mest lästa tips
Artiklar
»Delphi och ADO
»Bygga en DLL
»Skapa en enkel rapport
»Hantera registret
»Enheter, units
»Klassen TCanvas
»Använd LookUp Controls
Nya
tips
Lägg
till tips
Delphilänkar
Gästbok
|
|
|
|
Funktioner för att returnera och sätta timestamp på filer
|
Kategori: Filer
Inlagt: 2005-01-08
Läst: 1258
Inlagt av: Staffan Berg
|
Beskrivning |
Den första funktionen returnerar datum och tid för en fil då den senast sparades. Den andra funktionen skapar ett motsvarande timestamp.
|
Kod |
function GetFileDateTimeModified(const FileName: string ; var yyyy,mm,dd,h,m,s: word): boolean; var dt,tm: word; DateTime: integer; begin result := false; DateTime := FileAge(FileName); if DateTime = -1 then exit else result := true; tm := DateTime and $FFFF; //lower word dt := DateTime shr 16; //upper word h := tm shr 11; m := (tm shr 5) and $3F; s := (tm and $1F) * 2; dd := dt and $1F; mm := (dt shr 5) and $F; yyyy := (dt shr 9)+1980; end; function SetFileDateTime(const FileName: string ; var yyyy,mm,dd,h,m,s: word): boolean; //sets Created, Modified & LastAccessed file date/times var SrchHdl: THandle; FileHdl: HFile; FindData: TWin32FindData; wDate,wTime: word; LocalFileTime, NewFileTime: TFileTime; begin result := false; SrchHdl := FindFirstFile(PChar(FileName), FindData); if SrchHdl <> INVALID_HANDLE_VALUE then begin Windows.FindClose(SrchHdl); //if not a directory then ... if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then begin wTime := (h shl 11) + (m shl 5) + (m div 2); wDate := (dd) + (mm shl 5)+ ((yyyy-1980) shl 9); DosDateTimeToFileTime(wDate,wTime,LocalFileTime); LocalFileTimeToFileTime(LocalFileTime, NewFileTime); FileHdl := _lopen(PChar(FileName), OF_WRITE); if FileHdl <> HFILE_ERROR then begin if SetFileTime(FileHdl,@NewFileTime,@NewFileTime,@NewFileTime) then result := true; _lclose(FileHdl); end; end; end; end;
|
|
|