![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дата создания файла и количество строк?
Я © (2008-05-07 13:47:00)Скажите пожалуйста как можно используюя 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;
AtZako (2008-05-10 14:39:00) [1]Вроде никак. Если только не прочитать кусочек из файла и анализировать его содержимое.
Юрий Зотов (2008-05-07 16:54:00) [2]> Я (07.05.08 14:26) [17]
> Вопросы закрыты. Разобрался.
Тогда вопрос.
Понятие "строка" существует только для текстовых файлов. Спрашивается - а как, зная только имя файла, определить, текстовый он или нет?
han_malign (2008-05-07 15:55:00) [3]эээ???
а FileTimeToDateTime(sr.FindData.ftCreationTime)?
а как насчет того, что FileAge возвращает время последней модификации(которое уже лежит в sr.Time), а не создания?
Игорь Шевченко (2008-05-07 14:29:00) [4]Reindeer Moss Eater © (07.05.08 14:17) [12]
> загрузить фай в стринглист и взять его каунт
Какой ты злой, право. Вроде и праздник сегодня...
Я (2008-05-07 14:26:00) [5]Вопросы закрыты. Разобрался. Большое всем спасибо.
Reindeer Moss Eater (2008-05-07 14:23:00) [6]А как здесь же посчитать несколько фойлов попорядку?
Поставить рядом несколько компьютеров с этим кодом. по числу файлов.
Я (2008-05-07 14:20:00) [7]Я понимаю что количество строк можно посчитать вот так:
Schet:=0;
AssignFile(F1, 'путь до файла');
Reset(F1);
while not SeekEof(F1) do
begin
ReadLn(F1, Ch);
inc(Schet);
Label1.Caption:=IntToStr(Schet);// покажет количество строк в файле
end;
CloseFile(F1);
Но это только для одного файла. А как здесь же посчитать несколько фойлов попорядку?
Knight (2008-05-07 14:20:00) [8]> [11] Я (07.05.08 14:14)
мэй би...
ReadLn();
Inc(k);
Palladin (2008-05-07 14:17:00) [9]раз, два, три, четыре, ...,эн, эн+1, эн+2...
Reindeer Moss Eater (2008-05-07 14:17:00) [10]загрузить фай в стринглист и взять его каунт
Я (2008-05-07 14:14:00) [11]А как в repeat/until посчитать количество строк в каждом файле?
Я (2008-05-07 14:10:00) [12]Блин во тупица!
Нада было так
if not FileExists('E:\FilesProject\Vhod\' + sr.Name) then Raise Exception.Create('Нет файла');
a:=GetFileDateTime('E:\FilesProject\Vhod\' + sr.Name);
Reindeer Moss Eater (2008-05-07 14:07:00) [13]Ты либо ответы читай и вникай, либо вопросы свои не задавай.
Reindeer Moss Eater (2008-05-07 14:07:00) [14]The return value is -1 if the file does not exist.
Я (2008-05-07 14:06:00) [15]Что озночает (-1). Почему функция не хочет показывать дату файла?
Reindeer Moss Eater (2008-05-07 14:05:00) [16]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);
Palladin (2008-05-07 14:04:00) [17]вообще говоря не нужно наивно полагать, что DateToStr(-1) вернет '-1' :)
Reindeer Moss Eater (2008-05-07 14:02:00) [18]Получил вчерашнюю пустую делфийскую дату (-1)
Palladin (2008-05-07 14:01:00) [19]это и есть -1
Я (2008-05-07 14:00:00) [20]Сделал так
a:=FileAge(sr.Name);
В результате получил следующее - 29.12.1899