Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

Дата создания файла и количество строк?   Найти похожие ветки 

 
Я   (2008-05-07 13:47) [0]

Скажите пожалуйста как можно используюя FindFirst/FindNext узнать дату создания файла и количество строк в каждом файле.

Что есть:
Функция определяющая дату создания файла

function GetFileDateTime(FileName: string): TDateTime;
var
 intFileAge: LongInt;
begin
 intFileAge := FileAge(FileName);
 if intFileAge = -1 then
   Result := 0
 else
   Result := FileDateToDateTime(intFileAge)
end;

FileAttrs := FileAttrs + faSysFile;

Кусок кода

 
var
 sr: TSearchRec;
 FileAttrs: Integer;
 a:TDateTime;
begin
FileAttrs := FileAttrs + faSysFile;

if FindFirst("путь до файлов", FileAttrs, sr) = 0 then
   begin
     repeat
        a:=GetFileDateTime(sr.Name);// не работает пытаюсь взять дату создания файла
        if (sr.Attr and FileAttrs) = sr.Attr then
       begin

          ListBox1.Items.Add(sr.Name + "   " + DateToStr(a));
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);
   end;


 
Reindeer Moss Eater ©   (2008-05-07 13:50) [1]

function FileAge(const FileName: string): Integer;

Call FileAge to obtain the OS timestamp of the file specified by FileName. The return value can be converted to a TDateTime object using the FileDateToDateTime function.

The return value is -1 if the file does not exist.


 
Я   (2008-05-07 14:00) [2]

Сделал так

a:=FileAge(sr.Name);

В результате получил следующее - 29.12.1899


 
Palladin ©   (2008-05-07 14:01) [3]

это и есть -1


 
Reindeer Moss Eater ©   (2008-05-07 14:02) [4]

Получил вчерашнюю пустую делфийскую дату (-1)


 
Palladin ©   (2008-05-07 14:04) [5]

вообще говоря не нужно наивно полагать, что DateToStr(-1) вернет "-1" :)


 
Reindeer Moss Eater ©   (2008-05-07 14:05) [6]

if FindFirst("путь до файлов", FileAttrs, sr) = 0 then
  begin
    repeat
       a:=GetFileDateTime(sr.Name);// не работает пытаюсь взять дату создания файла


if FindFirst("путь до файлов", FileAttrs, sr) = 0 then
  begin
    repeat
       if not FileExists(sr.name) then Raise Exception.Create("Опа! Как же так вышло? Могет я чото забыл???");
       a:=GetFileDateTime(sr.Name);


 
Я   (2008-05-07 14:06) [7]

Что озночает (-1). Почему функция не хочет показывать дату файла?


 
Reindeer Moss Eater ©   (2008-05-07 14:07) [8]

The return value is -1 if the file does not exist.


 
Reindeer Moss Eater ©   (2008-05-07 14:07) [9]

Ты либо ответы читай и вникай, либо вопросы свои не задавай.


 
Я   (2008-05-07 14:10) [10]

Блин во тупица!
Нада было так
if not FileExists("E:\FilesProject\Vhod\" + sr.Name) then Raise Exception.Create("Нет файла");
      a:=GetFileDateTime("E:\FilesProject\Vhod\" + sr.Name);


 
Я   (2008-05-07 14:14) [11]

А как в repeat/until посчитать количество строк в каждом файле?


 
Reindeer Moss Eater ©   (2008-05-07 14:17) [12]

загрузить фай в стринглист и взять его каунт


 
Palladin ©   (2008-05-07 14:17) [13]

раз, два, три, четыре, ...,эн, эн+1, эн+2...


 
Knight ©   (2008-05-07 14:20) [14]

> [11] Я   (07.05.08 14:14)

мэй би...

ReadLn();
Inc(k);


 
Я   (2008-05-07 14:20) [15]

Я понимаю что количество строк можно посчитать вот так:

Schet:=0;
AssignFile(F1, "путь до файла");
   Reset(F1);
   while not SeekEof(F1) do
     begin
       ReadLn(F1, Ch);
       inc(Schet);
       Label1.Caption:=IntToStr(Schet);// покажет количество строк в файле
     end;
   CloseFile(F1);


Но это только для одного файла. А как здесь же посчитать несколько фойлов попорядку?


 
Reindeer Moss Eater ©   (2008-05-07 14:23) [16]

А как здесь же посчитать несколько фойлов попорядку?

Поставить рядом несколько компьютеров с этим кодом. по числу файлов.


 
Я   (2008-05-07 14:26) [17]

Вопросы закрыты. Разобрался. Большое всем спасибо.


 
Игорь Шевченко ©   (2008-05-07 14:29) [18]

Reindeer Moss Eater ©   (07.05.08 14:17) [12]


> загрузить фай в стринглист и взять его каунт


Какой ты злой, право. Вроде и праздник сегодня...


 
han_malign ©   (2008-05-07 15:55) [19]

эээ???

а FileTimeToDateTime(sr.FindData.ftCreationTime)?
а как насчет того, что FileAge возвращает время последней модификации(которое уже лежит в sr.Time), а не создания?


 
Юрий Зотов ©   (2008-05-07 16:54) [20]

> Я   (07.05.08 14:26) [17]

> Вопросы закрыты. Разобрался.

Тогда вопрос.

Понятие "строка" существует только для текстовых файлов. Спрашивается - а как, зная только имя файла, определить, текстовый он или нет?


 
AtZako ©   (2008-05-10 14:39) [21]

Вроде никак. Если только не прочитать кусочек из файла и анализировать его содержимое.



Страницы: 1 вся ветка

Текущий архив: 2008.06.01;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.018 c
8-1181338607
Deathlord
2007-06-09 01:36
2008.06.01
Winsock


15-1208803632
No_Dead
2008-04-21 22:47
2008.06.01
Никому не попадался плагин(?) для Word a&amp;#133


2-1210513456
x
2008-05-11 17:44
2008.06.01
подвижный указатель *.ani


2-1209926951
Res
2008-05-04 22:49
2008.06.01
Проблемы с потоками


15-1208798690
NaRuTo
2008-04-21 21:24
2008.06.01
Delphi VS C++