Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2014, 13:38   #11
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию

min@y™, можно пример не большой. а то я полез!

DateTimeToStr(GetFileDateTime('C:\t ext.txt'));

Код:
function FileTimeToDateTime(FileTime: TFileTime): TDateTime;
var
  SystemTime: TSystemTime;
begin
  FileTimeToLocalFileTime(FileTime, FileTime);
  FileTimeToSystemTime(FileTime, SystemTime);
  Result := SystemTimeToDateTime(SystemTime);
end;

procedure GetFileInfo(const FileName: String;
  out CreationTime, ModificationTime, LastAccessTime: TDateTime);
var
  FileAttributeData: TWin32FileAttributeData;
begin
  ZeroMemory(@FileAttributeData, SizeOf(TWin32FileAttributeData));
  GetFileAttributesEx(PAnsiChar(FileName), GetFileExInfoStandard, @FileAttributeData);
  CreationTime := FileTimeToDateTime(FileAttributeData.ftCreationTime);
  ModificationTime := FileTimeToDateTime(FileAttributeData.ftLastWriteTime);
  LastAccessTime := FileTimeToDateTime(FileAttributeData.ftLastAccessTime);
end;    }

function GetFileDateTime(FileName: string): TDateTime;
var
  intFileAge: LongInt;
begin
  intFileAge := FileAge(FileName);
  if intFileAge = -1 then
    Result := 0
  else
    Result := FileDateToDateTime(intFileAge)
end;
AppData на форуме Ответить с цитированием
Старый 03.09.2014, 14:43   #12
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

через findfirst вернет все в одной структуре.
Человек_Борща вне форума Ответить с цитированием
Старый 03.09.2014, 21:03   #13
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
можно пример не большой. а то я полез!
Пример чего?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 03.09.2014, 21:48   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
можно пример не большой. а то я полез!
Попробую внести свой вклад, раз скриптами ты упоросто не желаешь работать:
Код:
unit Unit1;

{$mode objfpc}{$H+}

interface

uses  contnrs, windows,
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

type

  { TForm1 }
  TFileList=class
    FileProperty:TSearchRec;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
  public
    Files:TObjectList;
    { public declarations }
  end;
Const
  PathFrom='d:\1\';   //Откуда
  PathTo='d:\1\0\';   //Куда
var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
var sr:TSearchRec;
begin
 //Ищем в получателе, составляя список уже имеющихся файлов
 Files:=TObjectList.create(true);
 if FindFirst(PathTo+'*.',faAnyFile,sr)=0 then repeat
  if (sr.Attr and faAnyFile)<>0 then begin
    with TFileList(Files[Files.Add(TFileList.Create)]) do begin
     FileProperty:=sr;
    end;
  end;
 until FindNext(sr)<>0;
 FindClose(sr);
end;

procedure TForm1.Button1Click(Sender: TObject);
var sr:TSearchRec; i:integer;   Found,dateDiff:Boolean;
begin
 //Ищем в источнике файлы
 if FindFirst(PathFrom+'*.',faAnyFile,sr)=0 then repeat
  if (sr.Attr and faAnyFile)<>0 then begin
   Found:=false;datef:=false;
  //Найденный файл ищем в списке заранее найденного в каталоге-получателе
   for i:=0 to Files.Count-1 do begin
    with TFileList(Files[i]) do begin
     //Если имя совпадает и даты изменения разные
     if (FileProperty.Name=sr.Name) then begin
       Found:=true;
        dateDiff:=(FileProperty.FindData.ftLastWriteTime.dwHighDateTime<>sr.FindData.ftLastAccessTime.dwHighDateTime)or
                 (FileProperty.FindData.ftLastWriteTime.dwLowDateTime<>sr.FindData.ftLastAccessTime.dwLowDateTime)
      // Считаем что нашли то что нуна копирнуть
       Break;
     end;
    end;
   end;

   if (not Found)or dateDiff then begin
    //Копируем
    windows.CopyFile(PChar(PathFrom+sr.Name),PChar(PathTo+sr.Name),false);
    // и Запоминаем в список скопированное
    with TFileList(Files[Files.Add(TFileList.Create)]) do begin
     FileProperty:=sr;
    end;
   end
  end;

 until FindNext(sr)<>0;
 FindClose(sr);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Files.Free;
end;

end.
Пояснения требуются?

Минздрав++ предупреждает!: Копипастэ вредит вашему здоровью.
I'm learning to live...

Последний раз редактировалось Stilet; 03.09.2014 в 22:00.
Stilet вне форума Ответить с цитированием
Старый 04.09.2014, 08:43   #15
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию

если только
Код:
{$mode objfpc}{$H+}
поможете? )) у меня Delphi 7

а то я убрал
Код:
// {$mode objfpc}{$H+}
проект скомпилировался, но ничего не происходит. вообще! нажимаю. нет ошибок и не работает!

Код:
 if FindFirst(PathFrom.Text+'*.',faAnyFile,sr)=0 then repeat
сделал ..
Код:
  Form1.Memo1.Lines.Add(PathFrom + SR.Name);
а он мне показал только

C:\PathFrom\.
C:\PathFrom\..


хотя там есть файлы

Последний раз редактировалось AppData; 04.09.2014 в 09:53.
AppData на форуме Ответить с цитированием
Старый 04.09.2014, 09:32   #16
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Сказали же:
Цитата:
Сообщение от Stilet Посмотреть сообщение
Минздрав# предупреждает!: Копипастэ вредит вашему здоровью.
Обработчики назначили ?
phomm вне форума Ответить с цитированием
Старый 04.09.2014, 10:54   #17
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию

phomm, всмысле?!
AppData на форуме Ответить с цитированием
Старый 04.09.2014, 11:18   #18
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Почитайте-ка учебный материал, коли такие простые вещи вызывают затруднение.
Советую http://delphikingdom.com/lyceum/seminar.asp?ID=6
Вкратце, Вашу проблему должны решить двойные клики по пустому месту на форме и по кнопке.
phomm вне форума Ответить с цитированием
Старый 04.09.2014, 11:48   #19
AppData
Форумчанин
 
Регистрация: 20.09.2013
Сообщений: 248
По умолчанию

phomm, очень смешно! я думал ты что то имел другое ввиду. и все же не работает! в чем может быть проблема?!
phomm проверь сам и убедись в этом..

задача:

1. найти измененные файлы. и скопировать их.
2. если есть новые, скопировать тоже..


НЕ, я понимаю то что программировать должен я сам. но я не прощу сделать за меня всю работу. я только прощу помочь мне в этом коде. мог бы сам. не писал бы сюда! поверьте

Последний раз редактировалось AppData; 04.09.2014 в 15:54.
AppData на форуме Ответить с цитированием
Старый 04.09.2014, 21:41   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
phomm проверь сам и убедись в этом..
Прикрепляй архив всего проекта сюда. Согласен с утверждением что пример мой ты не разбирал и не изучал.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сбор только новых из разных папок strannick Microsoft Office Excel 2 20.12.2012 22:50
Создание новых дат и копирование строк Alex20010 Microsoft Office Excel 3 14.06.2012 03:08
Запрос на выборку 5 самых самых chircov090993 Microsoft Office Access 7 01.06.2012 21:56
Одни из jpg файлов реальные JPEG а другие только название. как загрузиь только картинки? AgressiveBehavior Общие вопросы Delphi 1 16.09.2009 09:39
ПОСТРОИТЬ ГРАФИК - ТОЛЬКО ДЛЯ САМЫХ УМНЫХ xsexrexga Общие вопросы Delphi 4 03.02.2007 12:22