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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2015, 20:55   #1
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию Выполнить действия по окончанию...

Всем привет,
Создаю свой велосипед, а точнее аудио плеер плеер, на основе bass.dll, но это не важно. Некоторые плееры такие как Windows Media Center перед запуском сканируют компьютер на наличие видео и музыки. Так вот я пытаюсь сделать тоже самое, чтобы при первом запуске на компьютере сканировалось система на наличие музыки.
Код такой:

Код:
procedure FindDrive;
var
  DType: Byte;
  Drive: Char;//Диск
begin
  for Drive := 'a' to 'z' do
    begin
      DType := GetDriveType(PChar(Drive+':\'));
        case DType of
          DRIVE_FIXED: FindFileMPIII(Drive + ':\');
        end;
    end;
  Form1.Show;  
end;
Так вот я делаю это лишь при первом запуске, 2 и последующее это не выполняется. Проблема в том что форма становится видимой когда поиск еще не закончен, как исправить? Поиск FindFileMPIII в рекурсии все ок. Как исправить?
HTTqp вне форума Ответить с цитированием
Старый 24.04.2015, 21:21   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Visible какой у формы? Поменяй на противоположный
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.04.2015, 21:23   #3
HTTqp
Форумчанин
 
Регистрация: 20.12.2013
Сообщений: 164
По умолчанию

все равно раньше срабатывает, чем проверится весь пк.
Подскажите а как на while в данном способе заменит?

Последний раз редактировалось HTTqp; 24.04.2015 в 21:26.
HTTqp вне форума Ответить с цитированием
Старый 24.04.2015, 21:33   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

надо не в сканере (findDrive) показывать форму (form1.show)
которая на самом деле и так будет показана (это ведь главная форма application.MainForm ).
А наоборот при создании формы (Events OnCreate )
проверять и запускать сканер или читать то что сохранил сканер.

Другой вариант запускать сканер ДО создания каких бы то ни было форм
Код:
Applicaton.Initialize;
FindDrive; 
Application.CreateForm(Tfom1, form1);
и опять же без упоминания в сканере форм (ее еще нет!!)

P.S.а теперь ответьте какова будет реакция человека на программу которая 3-5 минут (1TБ диск) "висит" и не показывает НИЧЕГО!
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 24.04.2015 в 21:41.
evg_m на форуме Ответить с цитированием
Старый 25.04.2015, 08:11   #5
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Совершенно согласен с evg_m. Зачем что-то сканировать? Из-за этого точно Ваш плеер будет не востребован.
FaTaL вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как выполнить действия с компонентом? artemavd Общие вопросы Delphi 14 10.08.2014 09:34
Используя компоненту Edit выполнить следующие действия. Аделинка Помощь студентам 2 31.03.2011 14:42
Выполнить действия при закрытии программы Lauri Общие вопросы Delphi 2 08.02.2011 02:34
Выполнить действия над машинными кодами Dimext Общие вопросы C/C++ 1 25.10.2010 18:46
Выполнить действия после отображения формы zhefran Общие вопросы Delphi 15 14.08.2008 16:50