Q&A

  • 파일의 수정일자를 알수 있을까여.
실행파일을 자동 업데이트 시키려 하는데 날자가 다를 경우에 업데이트
하려고 합니다.
파일의 수정일자를 델파이에서 알수 있나여.
1  COMMENTS
  • Profile
    김영남 2002.09.06 00:59
    게시물을 좀만 검색해보면 금방 아실수 있었을텐데...^^

    다음 글은 예전에 질답란에 김영대님이 올리신 내용입니다...

    김영대님 허락 없이 다시 게재하여 죄송합니다...^^



    아래 소스는 파일의 각종 정보를 읽어오는 루틴인데
    완전히 모듈화가 된것이 아니라 제가 쓰고 있는
    부분의 일부 입니다
    파일의 생성,변경,접근일자를 읽는 부분이 있어 올립니다


    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;