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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск файла 
:(
    Опции темы
Tokagero
  Дата 21.6.2008, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

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



Итак, господа, решил сделать такую штуку. Нужен самый банальный инсталлятор к программе, которая не вносилась в реестр при установеке и у каждого пользователя находится где угодно. Сначала рылся во всяких InstalShield'ах и Nullsoft install master'ах но пока я там всё пойму легче самому написать конкретно под себя. Хочу реализовать следующими шагами:
• Поиск ЕХЕшника программы
• Кинуть в папку с ЕХЕшником пару файлов (если есть то с автоматической заменой и автоматическим запуском)

Как бы это сделать по грамотнее? Возникает ряд вопросов:
1) Нужен быстрый алгоритм поиска, чтоб не сильно углублялся в поиск - до 5ти секунд максимум т.к. мне нужна директория ЕХЕшника, имя которого уже есть. Есть ли такой??
2) Можно ли какнть в программу запихнуть 4-5 файлов размером 2-150 кб и один 800 кб... Чтоб после найденой директории ЕХЕ туда их кинуть...

Буду очень рад исходникам или просто кускам кода по обоим вопросам. Спасибо заранее!!
PM MAIL   Вверх
ne0n
Дата 22.6.2008, 00:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


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

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



Цитата(Tokagero @  21.6.2008,  21:55 Найти цитируемый пост)
1) Нужен быстрый алгоритм поиска, чтоб не сильно углублялся в поиск - до 5ти секунд максимум т.к. мне нужна директория ЕХЕшника, имя которого уже есть. Есть ли такой??


рекурсивно просматривать дирректории, быстрее врятлит что придумаешь....хотя могу и ошибаться



Цитата(Tokagero @  21.6.2008,  21:55 Найти цитируемый пост)
2) Можно ли какнть в программу запихнуть 4-5 файлов размером 2-150 кб и один 800 кб... Чтоб после найденой директории ЕХЕ туда их кинуть...


храни в ресурсах.
PM MAIL ICQ   Вверх
Tokagero
Дата 22.6.2008, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

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



Можно примеры?? А на счет ресурсов мне нуно хранить только несколько библиотек и один экзешник.
PM MAIL   Вверх
MetalFan
Дата 22.6.2008, 10:06 (ссылка) |  (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(Tokagero @  22.6.2008,  08:53 Найти цитируемый пост)
А на счет ресурсов мне нуно хранить только несколько библиотек и один экзешник. 

да хоть что в ресурсах храни. как? - в поиск и в факи. есть масса примеров.
поиск по дискам быстрым никак не сделать, имхо. разве что предполагать расположение программы... тут приходит в голову несколько вариантов


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Tokagero
Дата 22.6.2008, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

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



Итак, поиск файла. Нашел следующее:

Код

procedure ListFilesInDirectory(const Dir : string; Strings : TStrings);
var
  rSearchRec : TSearchRec;
begin
  if not Assigned(Strings) then
    Exit;
  if FindFirst(Dir + '*.*', faAnyFile, rSearchRec) = 0 then
    repeat
      if ((rSearchRec.Name <> '.') and (rSearchRec.Name <> '..')) then
      if rSearchRec.Attr = faDirectory then
           ListFilesInDirectory( IncludeTrailingBackslash(Dir + '\' + rSearchRec.Name), Strings)
      else
        if ExtractFileExt(rSearchRec.Name) = '*.rar' then
          Strings.Add(rSearchRec.Name);
    until FindNext(rSearchRec) <> 0;
end;

Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ListFilesInDirectory(IncludeTrailingBackslash(Edit1.Text), Memo1.Lines);
end;


Все конечно замечательно, но кажется это только по маске, а мне нужэен конкретный файл... Если сделать
Код
if ExtractFileExt(rSearchRec.Name) = '*.exe' then

то отлично выводит список в мемо1, а если же 
Код
if ExtractFileExt(rSearchRec.Name) = 'Program.exe' then

то не выводит ничего.

Второй вопрос: как сделать поиск сразу по всем лдокальным дискам??  Т.к. в Edit1 не укажешь все сразу, да и кто знает сколко их и как их обозвали.

Третий вопрос... Может ктонть дать пример вывода только пути к файлу без его названия? Вариант записать в строку и с конца посимвольно изменить определенное кол-во символов на '' слишком геморройный, может есть какойнть простой способ...

Ну и последний вопрос... Как записать файл в ресурсы?? И какие форматы поддерживаются для записи в ресурсы. 

Буду очень благодарен!


Для ресурсов попробывал вот это: http://forum.vingrad.ru/index.php?showtopi...st&p=214550 изменив везде 
Код

Создаеш новый проект и бросаеш на форму: Memo,LebeledEdit(или Edit),OpenDialog и Button.

LebeledEdit  на  Edit .... Ошибка.


Это сообщение отредактировал(а) Tokagero - 22.6.2008, 11:13

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  1.jpg 12,89 Kb
PM MAIL   Вверх
Rohoss
Дата 22.6.2008, 11:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


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

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



Цитата(Tokagero @  22.6.2008,  10:45 Найти цитируемый пост)
Третий вопрос... Может ктонть дать пример вывода только пути к файлу без его названия? Вариант записать в строку и с конца посимвольно изменить определенное кол-во символов на '' слишком геморройный, может есть какойнть простой способ...

ExtractFilePath


--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
MetalFan
Дата 22.6.2008, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



автор не видит ответов?
все вопросы элементарны и не раз обсасываются в разнообразных факах. если он(автор темы) не умеет пользоваться поиском, то программировать ему наверное рановато будет.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Rohoss
Дата 22.6.2008, 11:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начальник интернета
***


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

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



Цитата(Tokagero @  22.6.2008,  10:45 Найти цитируемый пост)
Второй вопрос: как сделать поиск сразу по всем лдокальным дискам??  Т.к. в Edit1 не укажешь все сразу, да и кто знает сколко их и как их обозвали.

Код

for I := 0 to 25 do
begin
s:=Char(Ord('A') + i);
if GetDriveType(PChar(s+':')) = DRIVE_FIXED then
DiskList.Add(s);
end;



--------------------
Файловый менеджер Explorer.Net скачать  video
PM ICQ   Вверх
Tokagero
Дата 22.6.2008, 11:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

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



Цитата(MetalFan @  22.6.2008,  11:14 Найти цитируемый пост)
все вопросы элементарны и не раз обсасываются в разнообразных факах. если он(автор темы) не умеет пользоваться поиском, то программировать ему наверное рановато будет. 

Я не из тех людей которые ищут до потери пульса. Я сюда обратился чтоб сэкономить время с помощью советов и примеров более опытных людей. 
А впрочем это дело каждого лично что он думает о том или ином человеке.
PM MAIL   Вверх
ne0n
Дата 22.6.2008, 12:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


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

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



Цитата(Tokagero @  22.6.2008,  11:48 Найти цитируемый пост)
Я не из тех людей которые ищут до потери пульса. Я сюда обратился чтоб сэкономить время с помощью советов и примеров более опытных людей. 



Ты похоже из тех людей, которые вообще к поиску не прибегает....MetalFan, правильно подметил, что каждый вопрос обсасывался не раз на форуме...за 2 минуты можно найте ответы на все твои вопросы. Есть FAQ, DRKB,DelphiWorld....F1 наконец. Неужто самому не хочеться покапаться в материале? пока будешь искать найдешь для себя уйму полезной информации.


PM MAIL ICQ   Вверх
MetalFan
Дата 22.6.2008, 12:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Цитата(Tokagero @  22.6.2008,  11:48 Найти цитируемый пост)
Я не из тех людей которые ищут до потери пульса.

т.е. за тебя пусть ищут другие люди? ну-ну...


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Tokagero
Дата 22.6.2008, 12:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

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



Цитата(ne0n @  22.6.2008,  12:13 Найти цитируемый пост)
Есть FAQ, DRKB,DelphiWorld....F1 наконец. Неужто самому не хочеться покапаться в материале? пока будешь искать найдешь для себя уйму полезной информации.
 Смотрел и дркб и дефлфи вролд, искал похожие темы, но самым подходящим нашел вышеуказанный код, который нуждается в модификации... В которой собсно я и прошу помощи...


Цитата(MetalFan @  22.6.2008,  12:39 Найти цитируемый пост)
т.е. за тебя пусть ищут другие люди? ну-ну

Т.е. я думаю что тут есть люди которые знаю где оно находится и могут потратить на ответ 10 секунд в то время как ты потратьшь больше.
PM MAIL   Вверх
ne0n
Дата 22.6.2008, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


PlayBoy
**


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

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



Цитата(Tokagero @  22.6.2008,  12:43 Найти цитируемый пост)
 Смотрел и дркб


Значит плохо смотрел, 4 результат поиска по дркб:
Код

Var SearchRec:TSearchRec;

...

If FindFirst('c:\Windows\*.*', faAnyFile, SearchRec)=0 then

repeat

{Вот здесь мы можем делать с найденным файлом что угодно

SearchRec.name - имя файла

ExpandFileName(SearchRec.name) - имя файла с полным путем} 

until FindNext(SearchRec) <> 0;

FindClose(SearchRec);




это в кратце, чуть надо дописать код, но в общем виде он выглядит так.

DelphiWorld->Файловая Система -> Диски..... там даже статья есть " Простейший сканер диска "

И после этого ты говоришь что искал и нигде не нашел? 


Это сообщение отредактировал(а) ne0n - 22.6.2008, 14:00
PM MAIL ICQ   Вверх
Tokagero
Дата 22.6.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 25.10.2006

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



 smile пора качать дркб 3.0 )))) 

И последний, нубский вопрос  smile  приведите пжалста пример .... как найти в строке подстроку ))) забыл уже минут 10 вспомнить пытаюсь smile 

Это сообщение отредактировал(а) Tokagero - 22.6.2008, 14:40
PM MAIL   Вверх
MetalFan
Дата 22.6.2008, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

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



Pos,PosEx.


--------------------
There are always someone smarter than you...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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