아래 소스는 파일의 각종 정보를 읽어오는 루틴인데
완전히 모듈화가 된것이 아니라 제가 쓰고 있는
부분의 일부 입니다
파일의 생성,변경,접근일자를 읽는 부분이 있어 올립니다
procedure TFileInfoForm.GetFileInfo(FileName: 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, NIL, @ds[1], 255) - 1);
SetLength(ts, GetTimeFormat(LOCALE_USER_DEFAULT, time_noseconds, @mtm, NIL,
@ts[1], 255) - 1);
Result:=ds+' '+ts;
end;
var
SHFinfo: TSHFileInfo;
FindData: TWin32FindData;
FindHandle :THandle;
begin
L_FileName.Caption := ExtractFileName(FileName); // 파일명(Name)
다음 글은 예전에 질답란에 김영대님이 올리신 내용입니다...
김영대님 허락 없이 다시 게재하여 죄송합니다...^^
아래 소스는 파일의 각종 정보를 읽어오는 루틴인데
완전히 모듈화가 된것이 아니라 제가 쓰고 있는
부분의 일부 입니다
파일의 생성,변경,접근일자를 읽는 부분이 있어 올립니다
procedure TFileInfoForm.GetFileInfo(FileName: 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, NIL, @ds[1], 255) - 1);
SetLength(ts, GetTimeFormat(LOCALE_USER_DEFAULT, time_noseconds, @mtm, NIL,
@ts[1], 255) - 1);
Result:=ds+' '+ts;
end;
var
SHFinfo: TSHFileInfo;
FindData: TWin32FindData;
FindHandle :THandle;
begin
L_FileName.Caption := ExtractFileName(FileName); // 파일명(Name)
ShGetFileInfo(PChar(FileName), 0, SHFinfo, SizeOf(SHFinfo), // 파일종류만 알아낸다
SHGFI_TYPENAME);
L_Filetype.Caption := SHFinfo.szTypeName; // 파일종류(Type)
FindHandle := Windows.FindFirstFile(PChar(FileName), FindData);
try
L_Filesize.Caption := FloatToStr(Trunc(FileSize(FindData.nFileSizeHigh, FindData.nFileSizeLow) / 1024))+' KB ('+
IntToStr(FileSize(FindData.nFileSizeHigh, FindData.nFileSizeLow))+' Bytes)';
OldAttributes := FileGetAttr(FileName); // 파일의 속성(attribute)
CB_ReadOnly.Checked := (OldAttributes and faReadOnly) = faReadOnly;
CB_Archive.Checked := (OldAttributes and faArchive) = faArchive;
CB_System.Checked := (OldAttributes and faSysFile) = faSysFile;
CB_Hidden.Checked := (OldAttributes and faHidden) = faHidden;
L_Created.Caption := GetLocalTime(FindData.ftCreationTime); // 파일생성일(Created)
L_Modified.Caption := GetLocalTime(FindData.ftLastWriteTime); // 파일변경일(Modified)
L_LastAccess.Caption := GetLocalTime(FindData.ftLastAccessTime); // 파일접근일(LastAccess)
finally
Windows.FindClose(FindHandle);
end;
end;