델파이에서 파일을 얻고 수정할 시간입니다
이 기사에서는 델파이에서 파일 시간 정보를 얻고 수정하기 위해 시스템 기능 및 Windows API 기능 호출을 사용하는 방법을 소개합니다.
Windows 95/98에 익숙한 친구는 종종 오른쪽 클릭 방법을 사용하여 선택한 파일의 속성 정보를 보게됩니다. 파일 생성 시간, 수정 시간 및 액세스 시간은 속성 메뉴에 나열되어 있습니다. 이 정보는 종종 매우 유용하며 설정은 일반적으로 운영 체제 (즉, DOS/Windows 등)에 의해 자동으로 완료되며 사용자가 쉽게 수정할 수 없습니다.
여기서 델파이에서 파일 시간을 얻고 수정하는 방법을 소개하겠습니다. Delphi는 Windows API 기능에 대한 완전한 통화 인터페이스를 제공하여 고급 Windows 프로그래밍을 용이하게 할 수 있습니다. Delphi의 FindFirst 함수를 사용하면 파일 속성 레코드를 얻을 수 있으며이 레코드의 FindData 필드는 자세한 파일 시간 정보를 레코드합니다. 불행히도 FindData의 시간 정보는 직접 얻을 수 없습니다. 따라서 누군가 (편집자 주 :이 사람의 이름을 모르는 죄송합니다)는 파일 시간 형식의 변환을 완료하기 위해 변환 기능을 썼습니다. 특정 구현 방법은 아래에 참조로 제공됩니다.
함수 covfiledate (fd : _filetime) : tdateTime;
{파일 시간 형식 변환}
var
TCT : _SystemTime;
온도 : _filetime;
시작하다
filetimetolocalfiletime (FD, 온도);
filetimetosystemtime (온도, TCT);
covfiledate : = SystemTimetOdateTime (TCT);
끝;
위의 기능 지원을 사용하면 파일의 시간 정보를 얻을 수 있습니다. 간단한 예는 다음과 같습니다.
ProcDeure getFileTime (const tf : String);
{파일 시간 가져 오기, tf는 대상 파일 경로와 이름을 나타냅니다}
Const
model = yyyy/mm/dd, hh : mm : ss;
var
TP : TSEARCHREC; {검색 레코드로 TP를 선언}
T1, T2, T3 : 문자열;
시작하다
findfirst (tf, faanyfile, tp);
covFiledate (tp.finddata.ftcreationTime)));
{파일 생성 시간 반환}
T2 : = FormatDateTime (모델,
covFiledate (tp.finddata.ftlastWriteTime));
{파일 수정 시간 반환}
T3 : = FormatDateTime (모델, 지금));
{파일의 현재 액세스 시간을 반환}
FindClose (TP);
끝;
파일을 설정하는 시간은 더 복잡합니다. 다음 예제는 4 개의 DataMePicker 구성 요소를 사용하여 파일 생성 시간 및 수정 시간 설정을 완료합니다. 참고 : 파일의 액세스 시간은 수정 시간으로 대체됩니다. 아래 예제를 사용하면 양식에 4 개의 DataTimePicker 구성 요소를 추가하십시오. 첫 번째 및 세 번째 DataTimePicker 구성 요소의 종류가 dtkdate로 설정되고, 두 번째 및 네 번째 DataTimePicker 구성 요소의 종류는 dtktime으로 설정됩니다.
절차 setFileDateTime (const tf : String);
{파일 시간 설정, TF는 대상 파일 경로와 이름을 나타냅니다}
var
DT1, DT2 : 정수;
FS : tfilestream;
FCT, FLT : TFILETIME;
시작하다
DT1 : = DateTimetOfiledate (
trunc (form1.datetimepicker1.date) + frac (form1.dateTimepicker2.time));
DT2 : = DateTimetOfiledate (
trunc (form1.datetimepicker3.date) + frac (form1.dateTimepicker4.time));
{DataTimePicker에서 사용자가 입력 한 정보를 변환}
노력하다
fs : = tfilestream.create (tf, fmopenreadwrite);
노력하다
dosdateTimetofiletime (longrec (dt1) .hi, longrec (dt1) .lo, fct) 및 인 경우
LocalFileTimetofiletime (FCT, FCT) 및
dosdatetimetofiletime (longrec (dt2) .hi, longrec (dt2) .lo, flt) 및
localfiletimetofiletime (FLT, FLT)
그런 다음 setFileTime (fs.Handle,
@fct, @flt, @flt);
{파일 시간 속성 설정}
마지막으로
fs.free;
끝;
제외하고
MessagedLG (날짜 수정 작업 실패!,
Mterror, [mbok], 0);
{대상 파일이 사용되고있어 실패 등}
끝;
끝;
위의 내용은 파일 시간 속성을 수정하는 방법을 간략하게 소개합니다. 파일 시간 수정 범위는 1792 년 9 월 19 일에 시작되며 상한은 2999 이상에 도달 할 수 있습니다. 또한 다른 사람들의 문서를 파괴하는 것과 같은 부당한 방법 으로이 기술을 사용하지 마십시오.