Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];

Вниз

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

 
Я   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.043 c
2-1210619333
Nemeziz
2008-05-12 23:08
2008.06.01
Как проверить изменялся ли файл


15-1207201271
начинающий
2008-04-03 09:41
2008.06.01
Музыкальное оборзение


15-1208257304
XentaAbsenta
2008-04-15 15:01
2008.06.01
подскажите программку для выключения компа


6-1187952925
plotn
2007-08-24 14:55
2008.06.01
работа с TTCPClient


2-1210147682
webpauk
2008-05-07 12:08
2008.06.01
Преобразование типов





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский