{===============================================================================
function/procedure 명 : GetFileInfo()
설 명 : 파일의 정보를 알아온다.
파라미터 : FileName: String; -> 정보를알아올 파일명,
var iFileSizeByte -> 파일사이즈, sFileSizeKB -> 파일사이즈 : longint;
var sCreateDate -> 파일생성일, sUpdateDate -> 파일 수정일,
sAcessDate -> 파일접근일, sFileType -> 파일타입 : String
반환값 : -
================================================================================}
procedure GetFileInfo(FileName: String; var iFileSizeByte, sFileSizeKB : longint;
var sCreateDate, sUpdateDate, sAcessDate, sFileType : String);
function FileSize(hi,lo: integer) :longint;
begin
Result := (hi * MAXDWORD) + lo;
end;
// This function retrieves the last time, the given file was written to disk
function GetLocalTime(a:tfiletime):string;
var
mtm: TSystemTime;
at: TFileTime;
ds,ts: ShortString;
begin
filetimetolocalfiletime(a,at);
filetimetosystemtime(at,mtm);
SetLength(ds, GetDateFormat(LOCALE_USER_DEFAULT, 0, @mtm, PChar('yyyy/MM/dd'), @ds[1], 255) - 1);
//SetLength(ts, GetTimeFormat(LOCALE_USER_DEFAULT, time_noseconds, @mtm, NIL, @ts[1], 255) - 1);TIME_NOMINUTESORSECONDS
SetLength(ts, GetTimeFormat(LOCALE_USER_DEFAULT, 0, @mtm, PChar('hh:mm:ss'), @ts[1], 255) - 1);
Result:=ds+' '+ts;
end;
var
SHFinfo: TSHFileInfo;
FindData: TWin32FindData;
FindHandle :THandle;
begin
iFileSizeByte := 0;
sFileSizeKB := 0;
sCreateDate := '';
sUpdateDate := '';
sAcessDate := '';
sFileType := '';
ShGetFileInfo(PChar(FileName), 0, SHFinfo, SizeOf(SHFinfo), // 파일종류만 알아낸다
SHGFI_TYPENAME);
sFileType := SHFinfo.szTypeName; // 파일종류(Type)
FindHandle := Windows.FindFirstFile(PChar(FileName), FindData);
try
iFileSizeByte := FileSize(FindData.nFileSizeHigh, FindData.nFileSizeLow);
sFileSizeKB := Trunc(FileSize(FindData.nFileSizeHigh, FindData.nFileSizeLow) / 1024);
sCreateDate := GetLocalTime(FindData.ftCreationTime); // 파일생성일(Created)
sUpdateDate := GetLocalTime(FindData.ftLastWriteTime); // 파일변경일(Modified)
sAcessDate := GetLocalTime(FindData.ftLastAccessTime); // 파일접근일(LastAccess)
finally
Windows.FindClose(FindHandle);
end;
end;
출처 : 델마당 길가메쉬님 글
'知 > Delphi' 카테고리의 다른 글
DBGrid 선택된 셀 전체에 색 넣기. (0) | 2009.09.04 |
---|---|
2D 게임프로그램 참고자료 (0) | 2009.08.29 |
한글 안깨지게 자르기 (0) | 2008.08.23 |
RS-232, 485의 구분 및 통신코드 (0) | 2008.08.14 |
GRF 파일 저장 문제 (0) | 2008.07.25 |