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

Вниз

инфа о файле,скан директории,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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.52 MB
Время: 0.013 c
15-1140432193
Чапаев
2006-02-20 13:43
2006.03.12
Как хорошо было на сайте без флэша...


3-1137591605
Quantum
2006-01-18 16:40
2006.03.12
многопоточность и БД


1-1139373604
Disciple2005
2006-02-08 07:40
2006.03.12
Delphi &amp; Word


15-1139825192
Интересующийся
2006-02-13 13:06
2006.03.12
Кактеровки на валюты, акции, нефть и золото


3-1137275428
muster
2006-01-15 00:50
2006.03.12
Фильтрация с неточным совпадением





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский