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

Вниз

Как достать свойства файла?   Найти похожие ветки 

 
MAVr   (2005-07-10 01:23) [0]

Есть задача достать название, размер, свойства всех файлов в определенном каталоге.
Программа работает нормально если обрабатывается небольшое количество файлов, если же нужно обработать тысячи файлов начинаются траблы…
Поскольку, использую открытие файла… Тоесть программа запускается, открывает поочередно все файлы читая из них информацию после чего закрывается (закрывая все файлы). Тысячи файлов тому же Ворду открывать довольно проблематично.
Подскажите как работать с файлом не открывая его а соединяясь с ним.

Листиенг:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Grids;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Edit1: TEdit;
   Edit2: TEdit;
   memo1: TMemo;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
   WordApp: Variant;
 end;

var
 Form1: TForm1;

implementation
uses ComObj;
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
wdSaveChanges = $FFFFFFFF;

var F: TSearchRec;
SaveChanges: OleVariant;
begin
ChDir("C:\NNNMM\");
Edit1.Text := GetCurrentDir;
FindFirst(GetCurrentDir+"\*.doc", 0, F);
//Edit2.Text := F.Name;
WordApp := CreateOleObject("Word.Application");
WordApp.Documents.Open(GetCurrentDir + "\" + F.Name);
 repeat
memo1.lines.add(F.name);
memo1.lines.add(inttostr(F.Size));
WordApp.Documents.Open(GetCurrentDir + "\" + F.Name);
memo1.lines.add(WordApp.ActiveDocument.BuiltInDocumentProperties[$00000005].Value);
memo1.lines.add("");
   SaveChanges := wdSaveChanges;
until findnext(F)<>0;
findclose(F);
   WordApp.Quit(SaveChanges, EmptyParam, EmptyParam);

end;

end.


 
Просто Джо ©   (2005-07-10 02:36) [1]

А что мешает сделать открытом документу Close сразу же после получения из него нужной информации?


 
MAVr   (2005-07-10 11:46) [2]

Если не сложно... Как будет выглядеть Close в контексте программы (пробовал, но возникали критические ошибки)

... А вообще хотелось бы организовать именно связь с файлами, поскольку если обрабатыватся будут тысячи файлов, то это еще и вопрос времени, ведь нужно открыть и закрыть каждый файл...


 
Просто Джо ©   (2005-07-10 14:20) [3]

Во-первых, цикл построен неправильно - после FindFirst ты открываешь документ, после чего, на первой же итерации repeat/until ты открываешь его снова.
А под закрытие документа сразу же после его обработчки я имею ввиду следующее:

WordApp.Documents.Open(GetCurrentDir + "\" + F.Name);
memo1.lines.add(WordApp.ActiveDocument.BuiltInDocumentProperties[$00000005].Value);
WordApp.ActiveDocument.Close(...);


 
Юрий Зотов ©   (2005-07-10 22:33) [4]

> MAVr   (10.07.05 11:46) [2]

Сравните два таких алгоритма:

Алгоритм 1.

начало_цикла
 захватили_ресурс
 обработали_его
конец_цикла
освободили_все_ресурсы

Алгоритм 2.

начало_цикла
 захватили_ресурс
 обработали_его
 освободили_его
конец_цикла
 
1. Какой алгоритм жрет меньше ресурсов?
2. По какому алгоритму работает Ваш код?

Ответьте себе на эти вопросы - и сразу все станет ясно.


 
Сергей Евгеньевич   (2005-07-11 01:52) [5]

а по моему в дельфях есть такая фигня, как Filelistbox и там можно задавать с какими параметрами показывать файлы)) берешь и делаешь чтобы он поочередно показывал сначала скрытые, потом там системные и так далее, и по категориям засовывал их в твой TMemo. Ась?


 
MAVr   (2005-07-11 03:40) [6]

Да, все нормально работает... Спасибо.
Но все же, можно ли именно связатся с файлом, не открывая его?


 
Просто Джо ©   (2005-07-11 03:42) [7]


>
>  [6] MAVr   (11.07.05 03:40)
> Но все же, можно ли именно связатся с файлом, не открывая
> его?

Это смотря что ты понимаешь под "связаться".



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

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

Наверх




Память: 0.48 MB
Время: 0.049 c
1-1121033361
Alekse
2005-07-11 02:09
2005.07.31
Дочерние окна из dll


4-1117697038
Cosinus
2005-06-02 11:23
2005.07.31
Как опрделить по имени файла в "Избранном" адрес в Internet?


3-1119601311
salexn
2005-06-24 12:21
2005.07.31
СУБД Cache и его использование вмести с Delphi


1-1120811225
KIR
2005-07-08 12:27
2005.07.31
Работа с произвольным изображением на форме


9-1113573787
Yegorchic
2005-04-15 18:03
2005.07.31
Звезда