![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
GetFileTime и SetFileTime
Zool © (2002-03-18 19:22:00)Добройночи, доброе утро госпада программисты!
Подскажите почему не пашет такой код :
..........
var
T1, T2, T3 : PFileTime;
begin
GetFileTime(FileOpen("File.txt", fmOpenRead), T1, T2, T3);
SetFileTime(FileOpen("File.txt", fmOpenWrite), T2, T2, T2);
end;
При запуске Делфи ужасно матерится, а причуну не пойму, плиз хелп. Спосибо.
Zool (2002-03-20 21:44:00) [1]Всем сенкс! наконец-то всё пашет!!!
Rooman (2002-03-20 19:40:00) [2]ты некорректно используешь функцию FileOpen.
GetFileTime(FileOpen("S.txt", fmShareDenyNone), @T1, @T2, @T3);
// ты открыл файл s.txt и считал его параметры
SetFileTime(FileOpen("S.txt", fmOpenWrite), @T2, @T2, @T2);
// ты открыл тот же файл повторно
FileClose(FileOpen("S.txt", fmOpenWrite));
// ты открыл тот же файл третий раз и закрыл его
А первые две открытых, скажем так, копии этого файла - ты хрен закрыл!
Исправь так:
procedure TForm1.Button4Click(Sender: TObject);
var
T1, T2, T3 : TFileTime;
h:THandle;
begin
h:=FileOpen("S.txt", fmOpenReadWrite);
GetFileTime(h, @T1, @T2, @T3);
SetFileTime(h, @T2, @T2, @T2);
FileClose(h);
end;
Zool (2002-03-20 17:58:00) [3]Ну я и запарился с етой фигнёй! Мне, как я понял T2 менять не надо, я его меняю с помощью FileSetDate. И ещё как я понимаю, мы считываем с помощью ф-ции GetFileTime, а потом с помощью SetFileTime, заменяем двсе даты на дату открытия, то есть T2, я прав? Ну если я прав, то я не понимаю почему ета прога ровным счётом нифига не делает!
<T2 уже предстовляет собой дату 20 марта 2003 года :)>
procedure TForm1.Button4Click(Sender: TObject);
var
T1, T2, T3 : TFileTime;
begin
GetFileTime(FileOpen("S.txt", fmShareDenyNone), @T1, @T2, @T3);
SetFileTime(FileOpen("S.txt", fmOpenWrite), @T2, @T2, @T2);
FileClose(FileOpen("S.txt", fmOpenWrite));
end;
Anatoly Podgoretsky (2002-03-19 20:51:00) [4]Должен ихменить, но она то у тебя не отличается, ты же обратно записывешь старое значение, кроме того еще и окрываешь два раза один и тот же файд, неплохо бы и закрыть.
h :=FileOpen
GetFileTime(h, T1, T2, T3);
изменить что нибудь в T1, T2, T3
SetFileTime(h, T2, T2, T2);
FileClose
примерно так
Zool (2002-03-19 17:23:00) [5]А разве данный код не должен в файле File.txt, изменить дату создания, открытия, изминения на дату открытия?
Zool (2002-03-19 12:57:00) [6]А разве данный код не должен в файле File.txt, изменить дату создания, открытия, изминения на дату открытия?
Zool (2002-03-19 10:15:00) [7]А разве данный код не должен в файле File.txt, изменить дату создания, открытия, изминения на дату открытия?
Anatoly Podgoretsky (2002-03-18 22:02:00) [8]Я не значю чего тч от нее ожидаешь, но ты ничего не просишь
Zool (2002-03-18 21:31:00) [9]Ничё не выдаёт, а просто нефига не делает, не делает того, чего от нее просят!
Anatoly Podgoretsky (2002-03-18 20:44:00) [10]А что значит не пашет, выдает какую лиюо ошибку?
Я сейчас в чате.
Zool (2002-03-18 20:33:00) [11]Нету, ето весь код! И скажите на милось чего не пашет?
Zool (2002-03-18 20:32:00) [12]Win32Check улётная вещь! Короче если в var написать T1, T2, T3 : PFileTime, а не
TFileTime, тогда ошибка : неверный дискриптор, а если наоборот, то вообще нифига не происходит!
Anatoly Podgoretsky (2002-03-18 20:26:00) [13]А между Get и Set есть что нибудь?
Zool (2002-03-18 20:16:00) [14]Win32Check улётная вещь! Короче если в var написать T1, T2, T3 : PFileTime, а не
TFileTime, тогда ошибка : неверный дискриптор, а если наоборот, то вообще нифига не происходит!
Zool (2002-03-18 20:09:00) [15]Может оно и работает, но ф-ция SetFileTime(FileOpen("File.txt", fmOpenWrite), @T2, @T2, @T2), приносит 0 эффекта! Почему?!
Anatoly Podgoretsky (2002-03-18 20:07:00) [16]Zool (18.03.02 19:22)
При ссылке на матюги желательно их приводить полностью
Но возможно у тебя не дельфи матюгается, а система, надо проверять работу функции на ошибку
if GetFileTime(FileOpen("File.txt", fmOpenRead),@T1,@T2,@T3) = 0 then
ShowMessage("Error: " + IntToStr(GetLastError)):
А еще лучше Win32Check(GetFileTime(FileOpen("File.txt", fmOpenRead),@T1,@T2,@T3));
LLL (2002-03-18 19:54:00) [17]Указатели не иниц-ны.
var
T1, T2, T3 : TFileTime;
begin
GetFileTime(FileOpen("Test.dpr",fmOpenRead),@T1, @T2, @T3);
должно сработать.