LPSYSTEMTIME
SYSTEMTIME
構造体へのポインタです。^
演算子を使用してそのポインターを逆参照してみてください。
Write(GetFileDate^.wYear);
または:
Write(GetFileDate()^.wYear);
そうは言っても、エラー処理をまったく行っていないという事実は別として、GetFileDate()
実装はさまざまな API 関数に間違ったパラメーター値を渡しています。そのコードは、正しく実行されるどころか、コンパイルさえされるべきではありません。
代わりにこれを試してください:
function GetFileDate : SYSTEMTIME;
var
CheckFile: HANDLE;
FileTime: FILETIME;
FileTimeReturn: FILETIME;
SystemTimeReturn: SYSTEMTIME;
GetFileDateResult: SYSTEMTIME;
begin
ZeroMemory(@GetFileDateResult, SizeOf(GetFileDateResult));
CheckFile := CreateFile('FullPathTo\main.pas', GENERIC_READ, FILE_SHARE_READ, NIL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
if CheckFile <> INVALID_HANDLE_VALUE then
begin
if GetFileTime(CheckFile, @FileTime, nil, nil) then
begin
if FileTimeToLocalFileTime(@FileTime, @FileTimeReturn) then
begin
if FileTimeToSystemTime(@FileTimeReturn, @SystemTimeReturn) then
GetFileDateResult := SystemTimeReturn;
end;
end;
CloseHandle(CheckFile);
end;
GetFileDate := GetFileDateResult;
end;
begin
Write(GetFileDate.wYear);
end.
または、日付を取得するためだけにファイルを開く必要がないようFindFirstFile()
に、代わりに使用することをお勧めします。CreateFile()
ファイルシステムはその情報を提供できます。
function GetFileDate : SYSTEMTIME;
var
CheckFile: HANDLE;
FindFileData: WIN32_FIND_DATA;
FileTimeReturn: FILETIME;
SystemTimeReturn: SYSTEMTIME;
GetFileDateResult: SYSTEMTIME;
begin
ZeroMemory(@GetFileDateResult, SizeOf(GetFileDateResult));
CheckFile := FindFirstFile('FullPathTo\main.pas', @FindFileData);
if CheckFile <> 0 then
begin
if FileTimeToLocalFileTime(@FindFileData.ftCreationTime, @FileTimeReturn) then
begin
if FileTimeToSystemTime(@FileTimeReturn, @SystemTimeReturn) then
GetFileDateResult := SystemTimeReturn;
end;
FindClose(CheckFile);
end;
GetFileDate := GetFileDateResult;
end;