Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение даты создания файла, как сделать? 
:(
    Опции темы
MacTep
Дата 3.9.2004, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Ребят, помогите пожалуйста узнать дату создания определенного файла и изменить ее на другую. Как это сделать? Можно примерчик посмотреть?


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Pakshin A. S.
Дата 3.9.2004, 17:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Знаю на 100% получние: Есть такая штука TSearchRec.FindData.ftCreationDate:TFileTime;
PM   Вверх
Alex
Дата 3.9.2004, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Получение информации:
Код
type
 tInfoType = ( aFCreat       // Дата и время создания файла
             , aFCreatDate   // Дата создания файла
             , aFCreatTime   // Время создания файла
             , aFChange      // Дата и время изменения файла
             , aFChangeDate  // Дата изменения файла
             , aFChangeTime  // Время изменения файла
             );

function GetFileDate(info: tInfoType; FileName: String): String;
// Дата и время создания и последнего изменения файла
var
 Handle: tHandle;
 FindData: tWin32FindData;
 LocalFileTime1, LocalFileTime2: TFileTime;
 DosTime1, DosTime2: Integer;
 DateTime1, DateTime2: TDateTime;
begin
 Result:= 'none';
 if not FileExists(FileName) then exit;
 Handle := FindFirstFile(PChar(FileName), FindData);
 if Handle = INVALID_HANDLE_VALUE then
   RaiseLastOSError;

 Windows.FindClose(Handle);
 with FindData do begin
   FileTimeToLocalFileTime(ftLastWriteTime, LocalFileTime1);
   FileTimeToDosDateTime(LocalFileTime1, LongRec(DosTime1).Hi, LongRec(DosTime1).Lo);
   FileTimeToLocalFileTime(ftCreationTime, LocalFileTime2);
   FileTimeToDosDateTime(LocalFileTime2, LongRec(DosTime2).Hi, LongRec(DosTime2).Lo);
   DateTime1 := FileDateToDateTime(DosTime1);  // файл изменен
   DateTime2 := FileDateToDateTime(DosTime2);  // файл создан
 end;
 case info of
   aFCreat     : Result:= DateTimeToStr(DateTime2);
   aFCreatDate : Result:= DateToStr(DateTime2);
   aFCreatTime : Result:= TimeToStr(DateTime2);
   aFChange    : Result:= DateTimeToStr(DateTime1);
   aFChangeDate: Result:= DateToStr(DateTime1);
   aFChangeTime: Result:= TimeToStr(DateTime1);
 end;
end;


Это сообщение отредактировал(а) alex-co - 3.9.2004, 18:16


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Pakshin A. S.
Дата 3.9.2004, 18:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: 21
Всего: 61



Код

function GetTime(FileName:string):string;
var
 SearchRec:TSearchRec;
begin
 Result:='';
 if  FindFirst(FileName, faAnyFile or faHidden or faSysFile or faReadOnle, SearchRec)
  then
   begin
     Result:=DateToStr(FileDateToDateTime(SearchRec.FindData.ftCreationTime));// мог напутать с преобразованием типов
     FindClose(SearchRec);
   end;
end;

Суть та же, но места меньше... sad.gif
PM   Вверх
MacTep
Дата 3.9.2004, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



А изменение? Получение у меня получилось при помощи хелпа.
Добавлено @ 21:22
Я вот такую фишку делал:
1) когда создается форма, то выводится дата файла:
Код
procedure TForm1.FormCreate(Sender: TObject);
begin
 FileHandle:=FileOpen('c:\1\1.txt',0);
 Label4.Caption:=DateTimeToStr(FileDateToDateTime(FileGetDate(FileHandle)));
end;

2) когда нажимаю на кнопку "Изменить дату" в поле Edit1 ввожу новую дату типа "04.09.2004"
Код
procedure TForm1.Button1Click(Sender: TObject);
var date:TDateTime;
begin
 FileHandle:=FileOpen('c:\1\1.txt',0);
 date:=StrToDateTime(Edit1.Text);
 Label3.Visible:=true;
 FileSetDate(FileHandle,DateTimeToFileDate(date));
 FileClose(FileHandle);
 Close;
end;

Но после всего этого ни фига не меняется дата. Остается прежней. Что не так? FileHandle - глобальная переменная типа DateTime.


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
MacTep
Дата 3.9.2004, 21:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



ВСЕ!!! Сделал. Решил эту проблему так:
Код
procedure TForm1.Button1Click(Sender: TObject);
var TheFile:file;
   date:TDateTime;
begin
 date:=StrToDateTime(Edit1.Text);
 AssignFile(TheFile,'c:\1\1.txt');
 Reset(TheFile);
 FileSetDate(TFileRec(TheFile).Handle, DateTimeToFileDate(Date));
 CloseFile(TheFile);
end;

Вот такие пироги! smile.gif


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Wizardb
Дата 29.10.2005, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 29.10.2005

Репутация: нет
Всего: нет



MacTep Твой код работает, но он изменяет дату изменения файла, а как изменить дату создания файла? smile
PM MAIL   Вверх
MacTep
Дата 1.11.2005, 23:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1292
Регистрация: 4.8.2003
Где: г. Самара

Репутация: 4
Всего: 4



Цитата(Wizardb @ 29.10.2005, 13:31)
MacTep Твой код работает, но он изменяет дату изменения файла, а как изменить дату создания файла? smile

А это уже совсем другая история! smile Нужно новую тему создавать!


--------------------
(A)bort, (R)etry, (I)gnore = Haфиг, Heфиг, Пoфиг ... :)
PM MAIL   Вверх
Wizardb
Дата 2.11.2005, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 29.10.2005

Репутация: нет
Всего: нет



Э-э-э, слушай, тема как называется? Изменение даты создания файла называется! Так что это как раз в тему, а вот про дату изменения - не в тему! smile smile smile
PM MAIL   Вверх
Случайный посетитель
Дата 2.11.2005, 12:53 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











GetFileTime/SetFileTime
И сразу - GetFileAttributes/SetFileAttributes

  Вверх
Wizardb
Дата 2.11.2005, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 29.10.2005

Репутация: нет
Всего: нет



Слушай, а неможешь поподробнее написать, а то я чето такую функцию в справке не нашел -SetFileTime smile
PM MAIL   Вверх
Случайный посетитель
Дата 3.11.2005, 02:14 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











>Wizardb
В Delphi в меню - >Help->Windows SDK, там ищи.
Либо в MSDN
Для того, чтобы в приложении можно было использовать эти функции, подключи в Uses модуль windows.
  Вверх
Wizardb
Дата 3.11.2005, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 29.10.2005

Репутация: нет
Всего: нет



Слушай, вот я хочу взять дату из одного файла и присвоить другому. Вот у меня такой код:
Код

procedure TForm1.Button1Click(Sender: TObject);
var  f_CreationTime, f_LastAccessTime, f_LastWriteTime: PFileTime;
Thefile,Thefile2:file;
begin
 AssignFile(TheFile,'C:\Games\FalloutSim\FalloutSim.exe');
 Reset(TheFile);
 GetFileTime(TFileRec(TheFile).Handle , f_CreationTime, f_LastAccessTime, f_LastWriteTime);
 CloseFile(TheFile);
  AssignFile(TheFile2,'c:\111\1.txt');
  Reset(TheFile2);
  setFileTime(TFileRec(TheFile2).Handle,f_CreationTime, f_LastAccessTime, f_LastWriteTime);
  CloseFile(TheFile2);
end;


Но выскакивает ошибка, когда по кнопке кликаю. Че у меня неправильно, скажи пожалуйста, и как правильно сделать?
PM MAIL   Вверх
Случайный посетитель
Дата 3.11.2005, 12:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Wizardb @ 3.11.2005, 12:26)
Но выскакивает ошибка, когда по кнопке кликаю.


Ты бы текст ошибки привел?
  Вверх
Alexeis
Дата 3.11.2005, 12:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



Если используешь PFileTime то выдели под нее память а не передавай пустой указатель
Попробуй вот так
Код

procedure TForm1.Button1Click(Sender: TObject);
var
   f_CreationTime, f_LastAccessTime, f_LastWriteTime: TFileTime;
   Thefile, Thefile2 : file;
begin
 AssignFile(TheFile,'D:\1.txt');
 Reset(TheFile);
 GetFileTime(TFileRec(TheFile).Handle , @f_CreationTime, @f_LastAccessTime, @f_LastWriteTime);

 CloseFile(TheFile);

 AssignFile(TheFile2,'D:\2.txt');
 Reset(TheFile2);
 setFileTime(TFileRec(TheFile2).Handle,@f_CreationTime, @f_LastAccessTime, @f_LastWriteTime);
 CloseFile(TheFile2);
end;


Это сообщение отредактировал(а) alexeis1 - 3.11.2005, 13:02


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0671 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.