Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> работа с файлами по сети, сканирование файлов по сети 
:(
    Опции темы
Kusik
Дата 9.12.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



С помощью каких функций (или компонентов) можно просканировать директорию на наличие файлов определенного типа и получить их имена (в т.ч. и полный сетевой путь), чтобы в дальнейшем с ними работать?
например компонент TDriveComboBox не позволяет просматривать содержимое сети, с помощью чего это можно осуществить?
PM MAIL ICQ   Вверх
Демо
Дата 9.12.2005, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1278
Регистрация: 3.11.2005

Репутация: 30
Всего: 50



FindFirst/FindNext
FindFirstFile/FindNextFile


--------------------
    
PM MAIL ICQ Skype   Вверх
Snowy
Дата 9.12.2005, 15:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Kusik @ 9.12.2005, 15:17)
С помощью каких функций (или компонентов) можно просканировать директорию на наличие файлов определенного типа и получить их имена

FindFirst, FindNext

Цитата(Kusik @ 9.12.2005, 15:17)
например компонент TDriveComboBox не позволяет просматривать содержимое сети

Он показывает только список дисков.

Цитата(Kusik @ 9.12.2005, 15:17)
с помощью чего это можно осуществить?

Смотря что ты хочешь получить в итоге.
Диалог? Заполнить список? Выбрать файл?
PM MAIL   Вверх
Kusik
Дата 9.12.2005, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



мне нужно анализировать файлы, которые лежал по сети на другом компьютере, причем названия файлов я знать не могу, только могу знать папку где они лежат.
с помощью чего можно задать сетевую папку как источник хранения файлов, чтобы потом получать полный их список?
т.е. единоразово указать папку-хранилище и комп на котором она находится, а дальше получать список файлов и каждый по отдельности обрабатывать. (использовать их только для чтения и анализа содержимого)
PM MAIL ICQ   Вверх
Snowy
Дата 9.12.2005, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Kusik @ 9.12.2005, 15:30)
с помощью чего можно задать сетевую папку как источник хранения файлов

Смотря как задавать. Если программно, то просто в любую string переменную.
Если спросить у пользователя, то поле Edit или диалог выбора каталога.

Цитата(Kusik @ 9.12.2005, 15:30)
чтобы потом получать полный их список?

Список, как уже было сказано выше, можно получить при помощи FindFirst, FindNext.
Если тебе нужно его нарисовать, то положи на форму FileListBox, в качестве Mask укажи ему:
'\\компьютер\папка\*.*';
Аналогичную маску применять для FindFirst.
Код

procedure ScanDir(path: string);
var
  sr: TSearchRec;
  s:  string;
  i:  integer;
begin
  if FindFirst(path+'*.*',faAnyFile,sr) = 0 then
  begin
    repeat
      if sr.Name[1]='.' then continue;
      if sr.Attr=faDirectory then ScanDir(path+sr.Name+'\');
      if sr.Attr=faArchive then
        Form1.Memo1.Lines.Add(path+sr.Name);
    until FindNext(sr) <> 0;
  end;
end;

Использовать:
Код

  ScanDir('\\Computer\MyFolder\');

Этот код выведет в Memo1 список всех файлов на компьютере Computer, в папке MyFolder.
PM MAIL   Вверх
_hunter
Дата 9.12.2005, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 15
Всего: 98



в смысле? расшарь ее и все проблемы...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Kusik
Дата 12.12.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



а с помощью какой функции можно вызвать диалог открытия директории причем сетевой???
PM MAIL ICQ   Вверх
Snowy
Дата 12.12.2005, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Код

function SelectFolder(Handle: THandle): string;
var
  bi: TBrowseInfo;
  s: PChar;
  PIDL, ResPIDL: PItemIDList;
begin
  SHGetSpecialFolderLocation(Handle, CSIDL_DESKTOP, PIDL);
  s := StrAlloc(128);
  bi.hwndOwner := Handle;
  bi.pszDisplayName := s;
  bi.lpszTitle := 'Выбор прапки';
  bi.pidlRoot := PIDL;
  bi.lpfn := addr(CallBack);
  ResPidl := SHBrowseForFolder(BI);
  SHGetPathFromIDList(ResPidl, s);
  result:=s;
end;

PM MAIL   Вверх
Kusik
Дата 12.12.2005, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



TBrowseInfo это где на него ссылаться?
и какой хендл передавать в функцию?
PM MAIL ICQ   Вверх
Snowy
Дата 12.12.2005, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(Kusik @ 12.12.2005, 15:11)
TBrowseInfo это где на него ссылаться?

В uses указать ShlObj.

Цитата(Kusik @ 12.12.2005, 15:11)
и какой хендл передавать в функцию?

Хэндл формы, из которой вызываешь.
PM MAIL   Вверх
Kusik
Дата 12.12.2005, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



и еще такое CallBack не находит
PM MAIL ICQ   Вверх
Snowy
Дата 12.12.2005, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Это я забыл. Вот:
Код

procedure CallBack(wnd: hWnd; uMsg: UINT; lParam, lpData: LParam) stdcall;
begin
  SendMessage(wnd, BFFM_ENABLEOK, 0, 1);
end;

PM MAIL   Вверх
Kusik
Дата 12.12.2005, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 9.12.2005
Где: Харьков

Репутация: нет
Всего: нет



Спасибо!!! smile
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0787 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.