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

Вниз

инфа о файле,скан директории,ADO.   Найти похожие ветки 

 
KILROY   (2006-02-18 15:46) [0]

КАНИЧИВА СЕНСЕИ!!!=)
проблемы:
1)Как узнать инфу о файле(имя(без расширения),тип,размер,дату создания,изменения,создатель файла(документа) ?
2)Как сделать выбор директорий в сетевом окружении ?
3)Как добавить это инфу о файлах в БД?
kilroystudio.narod.ru/ado.rar если не затруднит скачайте и посоветуйте что и как лучше сделать.


 
Desdechado ©   (2006-02-18 15:57) [1]

1. FindFirst
2. function SHGetFolderPath(hwnd: HWND; csidl: Integer; hToken: THandle; dwFlags: DWord; pszPath: PAnsiChar): HRESULT; stdcall;
3. while( FindNext ) do begin
qry.Text:="INSERT...";
qry.ExecSQL;
end;


 
KILROY   (2006-02-18 17:14) [2]

КРУТО!!!Такой краткости я еще не видел=)))
1. begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name; //имя
       Cells[1,RowCount-1] := IntToStr(sr.size); //размер
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);
   end;

А остальные атрибуты как написать... тип,дата создания,создатель(владелец) документа...???
2.uses ShellAPI, ShlObj;

procedure TForm1.Button1Click(Sender: TObject);
var
TitleName : string;  

lpItemID : PItemIDList;  

BrowseInfo : TBrowseInfo;  

DisplayName : array[0..MAX_PATH] of char;  

TempPath : array[0..MAX_PATH] of char;  

 begin
FillChar(BrowseInfo, sizeof(TBrowseInfo), #0);  

BrowseInfo.hwndOwner := Form1.Handle;  

BrowseInfo.pszDisplayName := @DisplayName;  

TitleName := "Please specify a directory";  

BrowseInfo.lpszTitle := PChar(TitleName);  

BrowseInfo.ulFlags := BIF_RETURNONLYFSDIRS;  

lpItemID := SHBrowseForFolder(BrowseInfo);  

if lpItemId <> nil then begin  
 
SHGetPathFromIDList(lpItemID, TempPath);  
ShowMessage(TempPath);  
GlobalFreePtr(lpItemID);  
end;  
end;

Хмм..с этим тоже справился...токо раньше у меня в кнопочке был вот этот код
procedure TForm1.Button3Click(Sender: TObject);
begin
 begin
 Dir := "C:\ado";
 if SelectDirectory(Dir, [sdAllowCreate, sdPerformCreate, sdPrompt],SELDIRHELP) then
   Label1.Caption := Dir;

Теперь при нажатии на кнопочку поиск(файлов) то прога ищет токо те которыйе либо в каталоге с прогой либо на С:\ .Вот никак непойму как сделать так чтобы после выбора директории скан шел именно из нее...?
3.Пока еще не дошел.Но как вы видели я реализовал связь через ADO c Access.


 
KILROY   (2006-02-18 17:24) [3]

begin
 stringGrid1.RowCount := 0;

   FileAttrs := FileAttrs + faAnyFile;

 with stringGrid1 do
 begin
   RowCount := 0;
   dir:=  Label1.Caption;
   if FindFirst( dir+"*.txt",  FileAttrs, sr) = 0 then

   begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name;
       Cells[1,RowCount-1] := IntToStr(sr.size);
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);
   end;

      end;


Вот когда я убираю dir из этой сторчки    if FindFirst( dir+"*.txt",  FileAttrs, sr) = 0 then  тогда сканит в директории с прогой,а когда стоит то сканит в С:\ .Я уже всю голову сломал.


 
KILROY   (2006-02-18 17:27) [4]

И еще как сделать что бы он сканил не токо файлы с одним расширением.
уже все перепробовал, ваще не сканит.
Болит моя башка +_+


 
Desdechado ©   (2006-02-18 17:40) [5]

> я убираю dir
искать будет в текущей директории, этоне обязательно директория с программой

> сканит в С:\
нет слэша между C:\ado и *.txt, сделай
Dir:=IncludeTrailingBackSlash(Dir);


 
KILROY   (2006-02-18 18:02) [6]

ДОМЕ АРИГАТО Desdechado!!!!!!!!!+)))))))
а что касаецо остальных проблем?
1.И еще как сделать что бы он сканил не токо файлы с одним расширением(ехе,тхт...).
уже все перепробовал, ваще не сканит.т.е. сканит но показывает что 0 найдено.
пробовал:
dir+"*.txt" , "*.doc"
dir+"*.txt" + "*.doc"
dir+"*.txt" and "*.doc"
???
2.Cells[0,RowCount-1] := sr.name; //имя
      Cells[1,RowCount-1] := IntToStr(sr.size); //размер

А остальные атрибуты как написать... тип,дата создания,создатель(владелец) документа...???


 
KILROY   (2006-02-18 18:08) [7]

пробовал изучить вот это http://www.sources.ru/delphi/delphi_get_everything_about_file.shtml
но че то как то непонятно.да и к томуже не фига не компилицо.ошибка за ошибкой.


 
Desdechado ©   (2006-02-18 19:03) [8]

1. каждый тип в отдельности
2. изучи структуру sr: TSearchRec


 
Desdechado ©   (2006-02-18 19:11) [9]

погляди еще сюда
http://delphimaster.net/view/1-1140275055/


 
KILROY   (2006-02-18 20:36) [10]

1. а если в отдельности то stringgrid обнуляецо.как делать маску я невъехал(((...и вообще че не похоже это маску...
надо наверно чтобы все это в одной кнопочке.и записывались сразу все файлы с конкретными расширениями.
или как то с while ...


 
KILROY   (2006-02-18 20:52) [11]

вот что нить типо того токо это выдает ошибку=)
if FindFirst( dir+"\*.doc",  FileAttrs, sr) = 0   then
   while
   if FindFirst( dir+"\*.txt",  FileAttrs, sr) = 0
    then
   begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name;
       Cells[1,RowCount-1] := IntToStr(sr.size);
       end;


 
Desdechado ©   (2006-02-18 21:15) [12]

> если в отдельности то stringgrid обнуляецо
RowCount := 0; делай 1 раз, а не для каждой маски

я бы сделал как-то так:
1. Пишем функцию поиска по маске, которая передается в качестве параметра в нее. Параметром передается и нечто, куда складываем результаты.
2. Вызываем функцию для каждой из интересующих масок.


 
KILROY   (2006-02-18 21:34) [13]

хмм...а вот если так???....все работает токо он ищет почему то *.doc

begin
 stringGrid1.RowCount := 0;

   FileAttrs := FileAttrs + faAnyFile;
   Dir:=IncludeTrailingBackSlash(Dir);
 with stringGrid1 do
 begin
   RowCount := 2;
   dir:=  Label1.Caption;
    if FindFirst( dir+"\*.txt",  FileAttrs, sr) =0

      then

   begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name;
       Cells[1,RowCount-1] := IntToStr(sr.size);
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);

                 begin
   RowCount := 1;
   dir:=  Label1.Caption;
    if FindFirst( dir+"\*.doc",  FileAttrs, sr) =0

      then

                begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name;
       Cells[1,RowCount-1] := IntToStr(sr.size);
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);
       end;


 
KILROY   (2006-02-18 21:41) [14]

ВООО!УРЯ!!!НАМУТИЛ!!вот токо прально ли это...и еще есть пустые клеточки...как от них избавицо...и файлов будет много ну 50 шт. будет ...вот...вощем надо от пустых избавицо...
begin
 stringGrid1.RowCount := 0;

   FileAttrs := FileAttrs + faAnyFile;
   Dir:=IncludeTrailingBackSlash(Dir);
 with stringGrid1 do
 begin
   RowCount := 90;
   dir:=  Label1.Caption;
    if FindFirst( dir+"\*.txt",  FileAttrs, sr) =0

      then

   begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name;
       Cells[1,RowCount-1] := IntToStr(sr.size);
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);

                 begin
   RowCount := 100;
   dir:=  Label1.Caption;
    if FindFirst( dir+"\*.doc",  FileAttrs, sr) =0

      then

                begin
     repeat
       if (sr.Attr and FileAttrs) = sr.Attr then
       begin
       RowCount := RowCount + 1;
       Cells[0,RowCount-1] := sr.name;
       Cells[1,RowCount-1] := IntToStr(sr.size);
       end;
     until FindNext(sr) <> 0;
     FindClose(sr);
       end;


 
Desdechado ©   (2006-02-18 21:42) [15]

> Dir:=IncludeTrailingBackSlash(Dir);
> dir+"\*.txt"
масло масляное
справку читай по функциям, что используешь

>  RowCount := 1;
это я уже говорил. теперь думай сам


 
KILROY   (2006-02-18 22:00) [16]

СПаСибо ТЕ БОЛЬШОЕ!!!уже отредил=)
вот проблемы некоторые решил появились новые.
1.Надо сделать так чтобы после скана *.тхт пошел скан со следующей пустой строчки *.doc .
ну вот допустим нашел 5 тхт файлов и уже с 6ой строчки нашал вписывать doc.
я вот думаю сделать так чтобы он сосчитал сколько он нашел тхт файлов а потом просто начал записывать со следующей цыфры.
ну вот 5 нашел потом 5+1 и пошел дальше...


 
Вася   (2006-02-18 22:04) [17]

ты хоть читаешь, что тебе пишут? ну-ну...


 
KILROY   (2006-02-18 22:06) [18]

читаю конечно!!!
может пояснишь?...


 
Сеня   (2006-02-18 22:21) [19]

в твоих опусах из поста в пост идут ошибки, которые тебе показывали, а ты что-то лопочешь про "неполучаеццо"


 
KILROY   (2006-02-18 22:32) [20]

Может я совсем отупел?!
но че то не вижу я решения вот этой (1.Надо сделать так чтобы после скана *.тхт пошел скан со следующей пустой строчки *.doc .
ну вот допустим нашел 5 тхт файлов и уже с 6ой строчки нашал вписывать doc.
я вот думаю сделать так чтобы он сосчитал сколько он нашел тхт файлов а потом просто начал записывать со следующей цыфры.
ну вот 5 нашел потом 5+1 и пошел дальше...) проблемы.
остальное сделал уже.


 
Кузя   (2006-02-18 22:36) [21]

че то не вижу я решения
решения сам исскать надо или бабло гони
глюки тебе уже готовые показують


 
KILROY   (2006-02-18 22:42) [22]

вот нашел.
Function GetFileCount(Dir:string):integer;
var fs:TSearchRec;
begin
 Result:=0;
 if FindFirst(Dir+"\*.htm",faAnyFile-faDirectory-faVolumeID, fs)=0 then
   repeat
     inc(Result);
   until FindNext(fs)<>0;
 FindClose(fs);
end;

токо не компилицо. erorr: Begin expected but end found .
вставил код в procedure TForm1.Button1Click(Sender: TObject); .
я уже 10й час сижу...голова опухла.стараюсь как могу!


 
ALUKARD   (2006-02-20 20:49) [23]

как определить сколько файлов есть в определённой папке с определенным расширением?


 
Virgo_Style ©   (2006-02-20 21:01) [24]

ALUKARD   (20.02.06 20:49) [23]

Чукча не читатель? [3] с минимальными доработками


 
begin...end ©   (2006-02-20 21:10) [25]

> Desdechado ©   (18.02.06 21:15) [12]

> 1. Пишем функцию поиска по маске, которая передается в качестве
> параметра в нее. Параметром передается и нечто, куда складываем
> результаты.
> 2. Вызываем функцию для каждой из интересующих масок.

Лучше искать один раз, но по маске "*", и в процессе поиска заносить в поиск те имена, которые удовлетворяют какой-либо из масок (MatchesMask).



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

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

Наверх




Память: 0.54 MB
Время: 0.049 c
9-1126069315
4ECHOK
2005-09-07 09:01
2006.03.12
Сценарий поведения объекта.


2-1140597616
BigLoy
2006-02-22 11:40
2006.03.12
TMemoryStream


2-1140266785
KILROY
2006-02-18 15:46
2006.03.12
инфа о файле,скан директории,ADO.


15-1140025618
mr. Den
2006-02-15 20:46
2006.03.12
Люди ! Хелпь, плиз !


15-1140432721
kaZaNoVa
2006-02-20 13:52
2006.03.12
Алгоритм ограничения числа запусков программы/времени работы