D
DEN
Unregistered / Unconfirmed
GUEST, unregistred user!
我想做这样一个获取文件信息的程序:
;部分代码如下:
procedure TForm1.Button1Click(Sender: TObject);
;var
; ;FileOp : TOFStruct ;
; ;FHandle : THandle ;
; ;FInfo : TByHandleFileInformation ;
; ;dtCreate : TSystemTime;
begin
;memo1.clear;
;setlasterror(20);
;FHandle:= openfile(pchar(edit1.text),FileOp ,OF_READ);
;GetFileInformationByHandle(FHandle,FInfo);
; ;memo1.Lines.Add('File Attributes : ;'+inttostr(FInfo.dwFileAttributes));
; ;FileTimeToSystemTime(FInfo.ftCreationTime,dtCreate);
; ;memo1.Lines.Add('File Create Time : ;'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wYear)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMonth)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wDay)+' '
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wHour)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMinute)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wSecond) );
; ;FileTimeToSystemTime(FInfo.ftLastAccessTime,dtCreate);
; ;memo1.Lines.Add('File Last Access Time : ;'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wYear)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMonth)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wDay)+' '
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wHour)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMinute)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wSecond) );
; ;FileTimeToSystemTime(FInfo.ftLastWriteTime,dtCreate);
; ;memo1.Lines.Add('File Last Write Time : ;'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wYear)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMonth)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wDay)+' '
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wHour)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMinute)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wSecond) );
; ;memo1.Lines.Add('File Path and Name : ;'+FileOp.szPathName);
;_lclose(FHandle);
end;
;
然而,所得到的文件系统时间却总比通过windows自己得到的时间(右击看文件属性得到)
少整8个小时,不知何故。这个问题已经困绕我一天了,请各位大侠帮忙看看!
虽然在msdn中有说:当filetime >= 0x8000000000000000 时此函数会工作不正常,但
windows是怎么做到的(我的环境是win2000简/繁体系统)?
;部分代码如下:
procedure TForm1.Button1Click(Sender: TObject);
;var
; ;FileOp : TOFStruct ;
; ;FHandle : THandle ;
; ;FInfo : TByHandleFileInformation ;
; ;dtCreate : TSystemTime;
begin
;memo1.clear;
;setlasterror(20);
;FHandle:= openfile(pchar(edit1.text),FileOp ,OF_READ);
;GetFileInformationByHandle(FHandle,FInfo);
; ;memo1.Lines.Add('File Attributes : ;'+inttostr(FInfo.dwFileAttributes));
; ;FileTimeToSystemTime(FInfo.ftCreationTime,dtCreate);
; ;memo1.Lines.Add('File Create Time : ;'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wYear)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMonth)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wDay)+' '
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wHour)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMinute)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wSecond) );
; ;FileTimeToSystemTime(FInfo.ftLastAccessTime,dtCreate);
; ;memo1.Lines.Add('File Last Access Time : ;'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wYear)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMonth)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wDay)+' '
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wHour)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMinute)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wSecond) );
; ;FileTimeToSystemTime(FInfo.ftLastWriteTime,dtCreate);
; ;memo1.Lines.Add('File Last Write Time : ;'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wYear)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMonth)+'-'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wDay)+' '
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wHour)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wMinute)+':'
; ; ; ; ; ; ; ; ;+inttostr(dtCreate.wSecond) );
; ;memo1.Lines.Add('File Path and Name : ;'+FileOp.szPathName);
;_lclose(FHandle);
end;
;
然而,所得到的文件系统时间却总比通过windows自己得到的时间(右击看文件属性得到)
少整8个小时,不知何故。这个问题已经困绕我一天了,请各位大侠帮忙看看!
虽然在msdn中有说:当filetime >= 0x8000000000000000 时此函数会工作不正常,但
windows是怎么做到的(我的环境是win2000简/繁体系统)?