Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2009, 11:05   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Вопрос Удаление файла по его пути из TextListBox

Добрый день! Подскажите пожалуйста как удалить файл с компьютера, чтобы путь к этому файлу извлекался из Item-а TextListBox-a??
Вот код поиска фалов с расширением .mp3:
Код:
procedure findrecursive( const path: string; const mask: string);
var
 fullpath: string;
function recurse( var path: string; const mask: string ): boolean;
var
 F: TSearchRec;
 retval: integer;
 oldlen: integer;
 i: integer;
 p:string;
begin
 recurse := true;
 oldlen := length( path );
 retval := findfirst( path+mask, faanyfile, F );
while retval = 0 do begin
if (F.attr and (fadirectory or favolumeid)) = 0 then
 Form1.TextListbox1.Items.Add(Path+F.name);
 ///


 ///

 retval := findnext(F);
end;
 findclose(F);
if not result then exit;
 retval := findfirst( path+'*.*', fadirectory,F);
while retval = 0 do begin
if (F.attr and fadirectory) <> 0 then
if (F.name <> '.') and (F.name <> '..') then begin
 path := path + F.name + '\';
if not recurse( path, mask ) then begin
 result := false;
 break;
end;
 delete( path, oldlen+1, 255 );
end;
 retval := findnext(F);
end;
 findclose(F);
end;
begin
if path = '' then
 getdir(0, fullpath)
else
 fullpath := path;
if fullpath[length(fullpath)] <> '\' then
 fullpath := fullpath + '\';
if mask = '' then
 recurse( fullpath, '*.mp3' )
else
 recurse( fullpath, mask );
end;
А вот код ее применения (этой функции):
Код:
begin
 findrecursive('D:\Documents and Settings\Тёмка\Рабочий стол\Новая папка (11)\','*.MP3'); 
 end;
????
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.09.2009, 11:40   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
чтобы путь к этому файлу извлекался из Item-а TextListBox-a?
А что это за зверь? Посмотри есть ли у него свойство Selected или ItemIndex указывающее на выделенный элемент.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2009, 11:57   #3
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
А что это за зверь?
Это компонент из библиотеки RX)
Цитата:
Посмотри есть ли у него свойство Selected или ItemIndex указывающее на выделенный элемент.
У него есть оба этих свойства. Как можно сделать через них?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.09.2009, 11:59   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я лично о нем ничего не знаю.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2009, 12:50   #5
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Я лично о нем ничего не знаю.
Уважаемый коллега . Я уже сам догадался как сделать). Вот что нужно было добавить в процедуру (вроде как работает и удаляет только музыку):
Код:
var
 i: integer;
begin
 findrecursive('D:\Documents and Settings\Тёмка\Рабочий стол\Новая папка (11)\','*.MP3'); 
 for i:=0 to TextListBox1.Count - 1 do
 deletefile(textlistbox1.items.strings[i]);
 end;
Может кому-нибудь пригодится. Поэтому и выложил

Видать рано я радовался. Есть несколько проблем-вопросов:
1. Как изменить код, чтобы поиск ощуствлялся в автоматическом режиме?
2. Как сделать, чтобы имена найденных файлов не заносились в listbox?
3. Как сделать поиск в корне диска С?
Помогите если не трудно с этими вопросами??
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось Stilet; 03.09.2009 в 14:36.
artemavd вне форума Ответить с цитированием
Старый 03.09.2009, 14:24   #6
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

1)Можно вызывать данную функцию поиска при создании формы. Так же думаю можно закинуть в таймер, и функция будет автоматически искать файлы. Что то типа такого.

2)
Код:
procedure findrecursive( const path: string; const mask: string);
var
 fullpath: string;
function recurse( var path: string; const mask: string ): boolean;
var
 F: TSearchRec;
 retval: integer;
 oldlen: integer;
 i: integer;
 p:string;
begin
 recurse := true;
 oldlen := length( path );
 retval := findfirst( path+mask, faanyfile, F );
while retval = 0 do begin
if (F.attr and (fadirectory or favolumeid)) = 0 then
//Это убрать попробуй
 Form1.TextListbox1.Items.Add(Path+F.name);
 ///


 ///

 retval := findnext(F);
end;
 findclose(F);
if not result then exit;
 retval := findfirst( path+'*.*', fadirectory,F);
while retval = 0 do begin
if (F.attr and fadirectory) <> 0 then
if (F.name <> '.') and (F.name <> '..') then begin
 path := path + F.name + '\';
if not recurse( path, mask ) then begin
 result := false;
 break;
end;
 delete( path, oldlen+1, 255 );
end;
 retval := findnext(F);
end;
 findclose(F);
end;
begin
if path = '' then
 getdir(0, fullpath)
else
 fullpath := path;
if fullpath[length(fullpath)] <> '\' then
 fullpath := fullpath + '\';
if mask = '' then
 recurse( fullpath, '*.mp3' )
else
 recurse( fullpath, mask );
end;
3) Передай путь C:\.
з.ы. если я правильно понял корень диска С
Будь проще и люди к тебе потянутся

Последний раз редактировалось spamer; 03.09.2009 в 14:28.
spamer вне форума Ответить с цитированием
Старый 03.09.2009, 14:38   #7
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
1)Можно вызывать данную функцию поиска при создании формы. Так же думаю можно закинуть в таймер, и функция будет автоматически искать файлы. Что то типа такого.
У меня в таймере стоит вызов той самой функции.
Цитата:
3) Передай путь C:\.
з.ы. если я правильно понял корень диска С
Вроде как передавал, но почему то не искал. Обычный поиск находит, а мой нет.
???
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 03.09.2009, 14:41   #8
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
Вопрос

Цитата:
Сообщение от artemavd Посмотреть сообщение
У меня в таймере стоит вызов той самой функции.
Ну, а что еще нужно? =))
Цитата:
Сообщение от artemavd Посмотреть сообщение
Вроде как передавал, но почему то не искал. Обычный поиск находит, а мой нет.???
А твой поиск в подпапках ищет??? Точнее, во всех ли? ))
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 03.09.2009, 14:43   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Обычный поиск находит, а мой нет.
Я когда был на твоем месте (в смысле проблема была с поисками) сел один раз и написал себе класс, который обладал многими свойствами поиска типа LMDFinder. Теперь я создаю экземпляр класса, указываю путь, обработчик события, и запускаю. Очень упрощает все. Попробуй написать такое - рекомендую на будущее

P.S. при необходимости могу попробовать выдернуть его из модуля (у меня там много классов для разных работ) сюда.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2009, 14:44   #10
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Ну я только что попробывал, то все находится. Правда нада подождать, тошо долговато ищет, а так все работает.
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файла Яр|/||< (^_^) Общие вопросы Delphi 8 18.08.2009 09:05
Удаление из файла Шурик Общие вопросы Delphi 4 30.05.2009 23:08
Как из полного пути к файлу получить имя файла с расширением uraura Компоненты Delphi 2 20.03.2009 15:53
Как из пути файла вытянуть его последнюю папку viter.alex Microsoft Office Excel 7 19.01.2009 05:40
Запуск файла по пути John_chek Общие вопросы Delphi 3 29.05.2007 12:38