Napisałem sobie prosty kod do zmiany daty pliku.
var
Time1, Time2, Time3 : PFileTime;
ofs : _OFSTRUCT;
hFile : THandle;
begin
if OpenDialog1.Execute then
begin
hFile := OpenFile('C:\test.txt', ofs, OF_READWRITE);
if hFile = HFILE_ERROR then MessageBeep(0) else
GetFileTime(hFile, @Time1, @Time2, @Time3);
CloseHandle(hFile);
hFile := OpenFile(PChar(OpenDialog1.FileName), ofs, OF_READWRITE);
if hFile = HFILE_ERROR then MessageBeep(0) else
SetFileTime(hFile, @Time1, @Time2, @Time3);
CloseHandle(hFile);
end;
end;
Kod działa poprawnie, tyle że po zakończeniu procedury program wysypuje się na AccesViolation. Pokazuje mi się okno CPU i poświetla się linijka z "pop ebp", znajdująca się w kodzie proceduty TControl.WndProc. Co jest nie tak ?
[dopisane]
Wielki dzięki, rzeczywiscie nie pomyślałem :) .