Форум: "Начинающим";
Текущий архив: 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.012 c