Форум: "Основная";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
Внизформат setfiletime Найти похожие ветки
← →
Arhangel (2003-02-26 15:28) [0]Кто подскажет как перевести дату в формате TDateTime в формат PTimeFile, чтобы можно было использовать в функции setfiletime?
← →
Smashich (2003-02-26 15:30) [1]The SystemTimeToFileTime function converts a system time to a file time.
← →
Arhangel (2003-02-26 15:35) [2]Thanks to you very much!
← →
han_malign (2003-02-26 15:48) [3]function dt2ft(const aDateTime: TDateTime): TFileTime;
begin
int64(Result):=$014F35A9A90CC000+int64(10000)*Round(aDateTime*24*60*60);
end;
← →
Arhangel (2003-02-26 16:03) [4]Немного не то что надо, т.к. у функции dt2ft возвращает в формате Tfiletime, а функция setfiletime требует формат PTimeFile.
Как быть?
← →
Smashich (2003-02-26 16:04) [5]type
PTimeFile = ^TFileTime
← →
han_malign (2003-02-26 16:19) [6]var ft: TFileTime;
begin
............
ft:=dt2ft(Now);
SetFileTime(FileName,@ft,nil,nil);
← →
Arhangel (2003-02-26 16:39) [7]Все сделал как написал han_malign, программа запускается вроде что-то делает, но дата не миняется, в чем может быть дело?
Вот мой код:
var
f,i:integer;
s:string;
ft: TFileTime;
begin
..............
s:=("С:\КОНТРА.lnk");
f:=fileopen(s,fmopenwrite);
ft:=dt2ft(Now);
SetFileTime(f,@ft,nil,nil);
fileclose(f);
end;
← →
han_malign (2003-02-26 16:56) [8]1. Какую дату(Creatin/LastAccess/LastWriteTime) надо изменить и на что?
2. Открывается ли файл?
3. Есть такак штука GetLastError...
var
f,i:integer;
s:string;
ft: TFileTime;
begin
..............
s:=("С:\КОНТРА.lnk");
f:=fileopen(s,fmopenwrite);
if(f<>-1)then begin
ft:=dt2ft(Now);
if not SetFileTime(f,@ft,nil,nil) then ShowMessage("SetFileTime: "+IntToStr(GetLastError));
fileclose(f);
end else ShowMessage("FileOpen: "+IntToStr(GetLastError));
end;
← →
Arhangel (2003-02-26 17:05) [9]Дата Creatin, а спомощью функции fileopen(s,fmopenwrite) я просто получаю дискриптор файла, потом я его закрываю, больше с файлом ни чего не происходит.
← →
han_malign (2003-02-26 17:15) [10]я просто получаю дискриптор файла
- а ты его получаешь??? Кто ошибки обрабатывать будет - Борланд?
← →
Arhangel (2003-02-26 17:21) [11]Я проверял в пошаговом режиме, в переменную заносится число отличное от нуля, в моем случае 84.
← →
Arhangel (2003-02-26 17:38) [12]Я понять не могу почему она не работает:(. Вроде в виндах98 должна работать, однако ни чего не меняется.
Может кто у себя попробует на 98? Чтобы убедится что это только у меня не работает:). Или подскажите тогда какой-нить другой способ.
З.Ы. Всем спасибо за ответы.
← →
Arhangel (2003-02-26 17:44) [13]Вот что выдает сообщение:
SetFileTime:13
FileOpen:0
Это по поводу последних ошибок.
← →
han_malign (2003-02-26 17:59) [14]у меня все работает(Win98SE):
program ft;
{$APPTYPE CONSOLE}
uses Windows;
var st: TSystemTime;
_ft: TFileTime;
h: THandle;
begin
GetLocalTime(st);
SystemTimeToFileTime(st,_ft);
h:=CreateFile(PChar(ParamStr(1)),GENERIC_WRITE,0,nil,OPEN_EXISTING,0,0);
if(h<>INVALID_HANDLE_VALUE)then begin
if(not SetFileTime(h,@_ft,nil,nil))then Writeln("SetFileTime: ",GetLastError);
end else Writeln("Open: ",GetLastError);
end.
← →
han_malign (2003-02-26 18:02) [15]извиняюсь CloseHandle(h) забыл, но это дела не меняет.
З.Ы. Во всех файл-менеджерах по умолчанию показывается LastWriteTime (Modification time), может не там смотришь?
← →
Arhangel (2003-02-26 18:14) [16]О, да тут уже ответили:).
Я написал так:
var
f,i:integer;
s:string;
ft: TFileTime;
st:systemtime;
begin
..............
s:=("С:\КОНТРА.lnk");
f:=fileopen(s,fmopenwrite);
GetSystemTime(st);
SystemTimeToFileTime(st,ft);
SetFileTime(f,@ft,nil,nil);
fileclose(f);
end;
И у меня все заработало!:), кстати без функции dt2ft. Всем спасибо:) Особенно han_malign:).
← →
han_malign (2003-02-26 18:23) [17]блин, опять неправильно скопировал:
function dt2ft(const aDateTime: TDateTime): TFileTime;
begin
int64(Result):=$014F35A9A90CC000+int64(10000)*Round(aDateTime*24*60*60 *1000);
end;
- кривую дату выдавало, потому и ругалось (ERROR_INVALID_PARAMETER)
← →
Arhangel (2003-02-26 18:30) [18]Вот хотел у тебя спросить почему ты написал именно так, но не спросил, а надо было:)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.03.10;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c