Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.08.13;
Скачать: CL | DM;

Вниз

Подскажите, пожалуйста...   Найти похожие ветки 

 
Footballer ©   (2006-07-18 00:15) [0]

Здрасте, вы может помните мы с Homo Sapiens пишем audio-player и тут возникло ещё несколько вопросиков:
1) Как можно "открыть с помощью" сразу несколько файлов и по очереди их обработать;
2) Как можно выполнить сортировку в плэйлисте, например по алфавиту (может компонент есть такой);
3) Как можно сделать баланс (правая - левая колонка) Примечание:Использую компонент TBassPlayer;
4) Как можно выполнить поиск в плейлисте(вводишь часть имени, а тебе выдают список номеров строк, где этот отрывок присутствует);
5) Как можно узнать длину песенки, не открывая каждый раз файл, вот так:
for i:=0 to OpenDialog1.Files.Count-1 do
begin
 Mediaplayer1.filename:=opendialog1.files.strings[i];
 mediaplayer1.open;
 time:=found_file_lenght; //Это такая функция
 ..............................
end;


Ну вот, в общем и всё, жду ответов, зарание спасибо!


 
Marser ©   (2006-07-18 01:06) [1]

> 1) Как можно "открыть с помощью" сразу несколько файлов
> и по очереди их обработать;

Из проводника не помню как, надо искать. Из OpenDialog с помощью ofAllowMultiSelect в TOpenDialog.Options, после чего имена файлов можно достать в TOpenDialog.Files.

> Как можно выполнить сортировку в плэйлисте, например по
> алфавиту (может компонент есть такой);


> 2) Как можно выполнить сортировку в плэйлисте, например
> по алфавиту (может компонент есть такой);

Заданием функции обратного вызова с помощью Sort, которая есть у многих компонентов и потомков TList. В TStringList всё немного проще, уже приспособлено к сортировке строк.


 
Footballer ©   (2006-07-18 01:22) [2]


> Из проводника не помню как, надо искать. Из OpenDialog с
> помощью ofAllowMultiSelect в TOpenDialog.Options, после
> чего имена файлов можно достать в TOpenDialog.Files.

Вы меня не так поняли. Смотрите http://delphimaster.net/view/2-1152823256/
Пробовал как сказал Alx_ © Не фига не выходит


 
ArtemESC ©   (2006-07-18 01:25) [3]

Footballer ©   (18.07.06 01:22) [2]
А что конкретно не выходит


 
ArtemESC ©   (2006-07-18 01:30) [4]

И вообще, что значит "открыть с помощью"?


 
Footballer ©   (2006-07-18 01:31) [5]

Открывает тока первый файл...
Просто Paramcount=2 скока файлов не открывай


 
Footballer ©   (2006-07-18 01:38) [6]


> И вообще, что значит "открыть с помощью"?

Ну ты щёлкаешь на файлике правой кнопкой мыши, у тебя открывается всплывающее меню, а там есть строка "открыть с помощью"


 
ArtemESC ©   (2006-07-18 12:24) [7]

Footballer ©   (18.07.06 01:38) [6]
Понятна проблема...

>>2) Как можно выполнить сортировку в плэйлисте, например по алфавиту >>(может компонент есть такой);
 ListBox не подходит?

>>5) Как можно узнать длину песенки, не открывая каждый раз файл, вот >>так:
  Не открывая, нужно знать формат файла, в его сигнатуре содержиться
      это значение, поскольку плеер, как я понял, для разных форматов файлов то не как, можно делать как Winamp пока проигрывается один файл, параллельно загружать длины остальных песен...


 
antonn ©   (2006-07-18 13:31) [8]

Footballer ©   (18.07.06 0:15)
5) Как можно узнать длину песенки, не открывая каждый раз файл, вот так:

из "тегов".

ArtemESC ©   (18.07.06 12:24) [7]
можно делать как Winamp пока проигрывается один файл, параллельно загружать длины остальных песен...

а винамп не так делает. Он плугины опрашивает на предмет валидности файла(или его суппорта ими:)), и ловит на возврате длительность в мсек. А плугины можно опросить поочередно в одном потоке, т.ч. пока плеер заиграет, все длительности уже появятся.


 
Ketmar ©   (2006-07-18 20:56) [9]

>antonn ©   (18.07.06 13:31) [8]
это детали. а по-сути ArtemESC прав. %-)


 
ArtemESC ©   (2006-07-18 21:35) [10]

antonn ©   (18.07.06 13:31) [8]

из каких это тегов собираешься узнавать...


 
Footballer ©   (2006-07-18 22:18) [11]

Огромное спасибо Marser[1], очень помогли...

Осталось 4 вопроса...
1) Как можно "открыть с помощью" сразу несколько файлов и по очереди их обработать;
2) Как можно сделать баланс (правая - левая колонка) Примечание:Использую компонент TBassPlayer;
3) Как можно выполнить поиск в плейлисте(вводишь часть имени, а тебе выдают список номеров строк, где этот отрывок присутствует);
4) Как можно узнать длину песенки, не открывая каждый раз файл, вот так:
for i:=0 to OpenDialog1.Files.Count-1 do
begin
Mediaplayer1.filename:=opendialog1.files.strings[i];
mediaplayer1.open;
time:=found_file_lenght; //Это такая функция
..............................
end;

Поможите?..


 
Footballer ©   (2006-07-18 23:20) [12]

Не ну чё, больше ни кто ни чего не знает, что ли?


 
Ketmar ©   (2006-07-18 23:32) [13]

не, ну чё, платить за код будем? мы тут так весь плейер сами напишем, без вас, ага?


 
Footballer ©   (2006-07-18 23:43) [14]


> Ketmar

Вам уже 27 лет, вы тоже когда-то были начинающим, так что будте по снисходительней, пожалуйста...


 
Ketmar ©   (2006-07-18 23:57) [15]

>Footballer ©   (18.07.06 23:43) [14]
а через год будет 28. и так далее. но это к теме не относится.

к теме относится вот что: в своё время у меня не было интернета. зато была документация и "метод научного тыка". с тех пор осталась привычка -- сначала всё, что можно, проверяю и ищу сам, и только потом спрашиваю. Вы много видели моих вопросов на форуме? а я далеко не всезнайка...

поясню проще: у Вас наличествует полное отсутствие знания матчасти. учить матчасть на каком-то рабочем проекте -- это, конечно, похвально. но -- УЧИТЬ, а не скулить. Вам же посоветую писать пока программки попроще. лучше те, что даются в учебниках. там, гед разделы "упражнения". понимаю, что скучно. ну так не думайте, что программирование -- это сплошное удовольствие.

зыж и с чего это я сегодня такой многословный да вежливый? %-)
ззыж надеюсь, Вы воспримете этот пост как руководство к действию, а не как "наезд".


 
ArtemESC ©   (2006-07-19 00:48) [16]

Footballer ©   (18.07.06 22:18) [11]
Иначе, как рассматривать первую часть файла (сигнатуру), никак нельзя узнать о длине песенки, почти все форматы мультимедиа файлов выложены в интернете...

>> 3) Как можно выполнить поиск в плейлисте(вводишь часть имени, а тебе >> выдают список номеров строк, где этот отрывок присутствует);
     Если для плейлиста используется листбокс, то так(непроверял):
 
    str - отрывок              
 
    for i := 0 to ListBox.Items.Count - 1 do
         begin
           temp :=  ListBox.Items[i];
           If Length(str) <= Length(temp) then
                begin
                  for j := 1 to Length(temp) - Length(str) + 1 do
                       begin
                        If str = Copy(temp, j, Length(str)) then
                             begin
                               Присутсвует - i добавляем в список
                               break;
                             end
                       end;
                end;
         end;


 
Footballer ©   (2006-07-19 01:55) [17]


> Ketmar ©   (18.07.06 23:57) [15]

Между прочим мы с самого начала этот player делали, чтобы не сдавать экзамен в 9-ом классе. Нам уже сказали, что того, что мы сделали, вполне достаточно, но заметь, мы не остановились на этом. Мы пишем всё больше, больше... А всё потому что нам это нравится. И не говори, что программировать - скучно. И я не прошу тебя писать за нас плеер (См. [13]). Я всего лишь прошу ответить на несколько вопросов, возникших при написании плеера.


> Вам же посоветую писать пока программки попроще. лучше те,
>  что даются в учебниках. там, где разделы "упражнения"

То, что даётся в разделе "упражнения" уже слишком легко для нас. Ты же не думаешь, что мы на Delphi  так, с нуля начали. 4 года на QBasic, Pascal тебе о чём-нибудь говорят?..

Так что повторюсь, я не прошу тебя писать за нас плеер. Я всего лишь прошу ответить на несколько вопросов, возникших при написании плеера, и всё, что тут плохого?


 
grouzd)ev ©   (2006-07-19 02:19) [18]


> Между прочим мы с самого начала этот player делали, чтобы
> не сдавать экзамен в 9-ом классе

Што ж это за школа такая? я отделался, хаха, "сайтом". 2 дня, оценивали "дызайн". без просмотра кода конечно =)


> 4 года на QBasic, Pascal тебе о чём-нибудь говорят?..

"2 года вдв!" =)

не сочтите за стеб. автору удачи, только я все равно винампом пользуюсь

---
... we are walking on a thin line and you better avoid the risk ...


 
Footballer ©   (2006-07-19 02:35) [19]


> Што ж это за школа такая?

г. Волгоград
Краснооктябрьский район
Лицей №2
Бывшая школа №132
;-)


 
antonn ©   (2006-07-19 06:20) [20]

ArtemESC ©   (18.07.06 21:35) [10]
из каких это тегов собираешься узнавать...

а я теги в кавычки взял:)
для wav, например, заголовок читается, а время расчитывается так:
(DataSize)*8/SampleRate/BitsPerSample/ChannelModeID{stereo-mono}


 
ЮЮ ©   (2006-07-19 09:14) [21]


> 1) Как можно "открыть с помощью" сразу несколько файлов
> и по очереди их обработать;


Explorer и иже с ними не станут вызвыать так
player.exe file1.mp3 file2.mp3 ... fileN.mp3
он n раз слелает
player.exe file1.mp3
...
player.exe fileN.mp3


Поэтому твое приложение должно:

а) найти запущенную копию "себя", "передать" ему имя файла, полученное в ParamStr(1), fа само погибнуть. Если запущенных копий нет, тогда самому "открыть" этот файл.

6) уметь получать от других копий "себя" имена файлов, которе нужно открыть


 
Footballer ©   (2006-07-19 10:51) [22]


>   ЮЮ ©   (19.07.06 09:14) [21]

 Спасибо за совет, но нельзя как-нибудь попроще? Функцией там какой-нибудь? А то этот способ, как мне кажется сильно грузит проц(2000 раз открывать само себя!!!), и нерациональный.
 Вот Winamp, я так думаю, нашёл способ попроще...


 
Ketmar ©   (2006-07-19 11:39) [23]

>Footballer ©   (19.07.06 01:55) [17]
говорят о том, что Delphi -- это не BP и уж тем более не QB. и знать только язык -- это очень мало. надо ежё и в библиотеках ориентироваться. на что я и пытался намекнуть. теперь не намекаю, говорю открытым текстом.

>Footballer ©   (19.07.06 10:51) [22]
угу. способ называется shell extensions. вам туда пока рано.


 
Zeqfreed ©   (2006-07-19 13:52) [24]

> [22] Footballer ©   (19.07.06 10:51)

В winamp"е этим занимается специальный winamp agent — маленькое компактное приложеньице, насколько я могу судить. Проще способа нет, AFAIK.


 
Footballer ©   (2006-07-19 14:11) [25]


> ежё и в библиотеках ориентироваться

Извените, но какие библиотеки вы имели в виду?

> вам туда пока рано.

Ну почему же рано, по-моему никогда не рано постигать новые высоты :-)
Был бы благодарен, если бы вы объяснили, что это такое, или ссылку дали...

> В winamp"е этим занимается специальный winamp agent

А можно этот winamp agent использовать в своих целях, или написать самому что-то наподобии этого?


 
Bambucha   (2006-07-19 16:15) [26]


>  вам туда пока рано.

Я полностью согласен с футболёром


 
Zeqfreed ©   (2006-07-19 16:22) [27]

> [25] Footballer ©   (19.07.06 14:11)


> написать самому что-то наподобии этого?

Все в твоих руках.


 
Ketmar ©   (2006-07-19 16:57) [28]

>Footballer ©   (19.07.06 14:11) [25]
я имел в виду стандартные библиотеки Delphi. в том числе SysUtils и Classes, в которых много интересного. %-)

> Ну почему же рано
по определению. сначала желательно научиться программировать. и разобраться с Delphi. не с "батонокидательством", а с тем, как и что в Delphi работает и что вообще там есть. и зачем. иначе не имеет смысла туда лезь. вот скажите мне, например, что такое "интерфейс"? GUID? поясните механизм работы COM-объектов. или вот: "пространство имён оболочки и работа с ним".

за информацией "что это" можно пойти в гугль.

> А можно этот winamp agent использовать в своих целях, или
> написать самому что-то наподобии этого?

использовать нельзя. написать -- можно. не магическим же конденсированием этот агент длелали? тоже ведь писали...


 
!_SM_!   (2006-07-19 18:06) [29]

Про добавление файлов
unit Unit1;

interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls, ShellApi;

type
 TForm1 = class(TForm)
   ListBox1: TListBox;
   procedure FormCreate(Sender: TObject);
 private
   procedure DropFiles(var Mes: TWmDropFiles); message WM_DROPFILES;
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure AddFile(const FL: String);
begin
  Form1.ListBox1.Items.Add(FL);
end;

procedure TForm1.DropFiles(var Mes: TWmDropFiles);
var N, I: Integer;
FlNm: String;
begin
 N:=DragQueryFile(Mes.Drop, $FFFFFFFF, nil, 0)-1;
 try
  for I:=0 to N do begin
   SetLength(FlNm, 80);
   DragQueryFile(Mes.Drop, I, PChar(FlNm), 80);
   FlNm:=PChar(FlNm);
   AddFile(FlNm);
  end;
 finally DragFinish(Mes.Drop); end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var N, N1: Integer;
begin
 ListBox1.Clear;
 N1:=ParamCount;
 for N:=1 to N1 do AddFile(ParamStr(N));
 DragAcceptFiles(Handle, True);
end;

end.


 
Footballer ©   (2006-07-19 19:11) [30]


> Ketmar ©   (19.07.06 16:57) [28]


> Что такое интерфейс?


 Говоришь ты умно, а даже вопрос ставишь некорректно... Итерфейс чего? Или как это слово переводится с английского на русский?
 Рискну предположить, что ты имеешь в виду интерфейс Delphi7. Это расположение всех менюшек, сами эти менюшки, кнопки и тд. и тп.


> COM технологии...


При использовании технологии COM между собой взаимодействуют Сервер и Клиент. Сервером может быть как отделное приложение, так и dll.Сервером может быть и отдельный комп, соединённый с клиентом посредством сети.

COM поддерживает 3 основных принципа: инкапсуляцию, наследование и полиморфизм.

Инкапсуляция-это механизм, объединяющий данные и методы, манипулирующие этими данными, а также защищает первое и второе от внешнего вмешательства или неправильного использования.

Наследование- это процесс, в результате которого один компонент может приобретать свойства другого.

Полиморфизм означает, что порождённый объект может изменять какие-то черты, сохраняя
главный принцип.

С тебя хватит. Надеюсь ты понял что это такое. А по гуглю лазить незачем. Те вопросы,
которые ты мне задал, проходят на уроках информатики в школе.


 
Zeqfreed ©   (2006-07-19 20:41) [31]

> Говоришь ты умно, а даже вопрос ставишь некорректно... Итерфейс
> чего? Или как это слово переводится с английского на русский?
>
> Рискну предположить, что ты имеешь в виду интерфейс Delphi7.
> Это расположение всех менюшек, сами эти менюшки, кнопки
> и тд. и тп.

Ответ не верный :)
Хотя… Ответов, их много: http://www.google.com/search?client=opera&rls=en&q=define:+Interface&sourceid=opera&ie=utf-8&oe=utf-8


 
Homo Sapiens ©   (2006-07-19 22:07) [32]

Удалено модератором


 
Homo Sapiens ©   (2006-07-19 22:08) [33]

Удалено модератором


 
Zeqfreed ©   (2006-07-19 22:09) [34]

> [32] Homo Sapiens ©   (19.07.06 22:07)

Да я вам лично, если мне не изменяют память, зрение и Ctrl+F, ничего в пределах дынной ветки и не говорил.


 
Ketmar ©   (2006-07-19 22:20) [35]

>Footballer ©   (19.07.06 19:11) [30]
ну вот. первй вопрос вообще не понят (хотя из контекста, имо, вполне понятно что есть "интерфейс" и к чему оно там).

на третий вопрос ответа не дано вообще. после первого предложения следуют ответы на вопросы, которые вообще не были заданы (у Вас проблема с логическим мышлением, имо).

второй и четвёртый тихо проигнорены.

вопрос номер последний: нафига выпендриваться, если не можешь ответить? я ведь эти вопросы задал далеко не просто так. они имеют самое прямое отношение к теме "shell extensions". собственно, это даже не столько вопросы, сколько хинты. так что вместо демонстрирования своей крутости лучше бы поспрошали-таки гугль...

>Homo Sapiens ©   (19.07.06 22:07) [32]
думаю, что знания чисто теоретические. %-)


 
Footballer ©   (2006-07-20 00:15) [36]

Удалено модератором


 
Footballer ©   (2006-07-20 00:15) [37]

Удалено модератором


 
Footballer ©   (2006-07-20 00:16) [38]

Да, кстати, мне кажется, я немного отвлёкся от основной темы

Хотел бы поблагодарить:
1) Ещё раз Marser за пост [1] (сортировка массива);
2) Огромное спасибо ArtemESC © за пост [16] (поиск);
3) Поблагодарю Kertman если он наконец объяснит, что такое"shell extensions" или какой-нибудь другой вариант решения первого вопроса :-)

А тем временем у меня осталось всего 3 вопроса:
1) Как можно "открыть с помощью" сразу несколько файлов и по очереди их обработать;
2) Как можно сделать баланс (правая - левая колонка) Примечание:Использую компонент TBassPlayer;
3) Как можно узнать длину песенки, не открывая каждый раз файл, вот так:
for i:=0 to OpenDialog1.Files.Count-1 do
begin
Mediaplayer1.filename:=opendialog1.files.strings[i];
mediaplayer1.open;
time:=found_file_lenght; //Это такая функция
..............................
end;

Зарание благодарю!


 
Footballer ©   (2006-07-20 00:22) [39]


> !_SM_!   (19.07.06 18:06) [29]
> Про добавление файлов

Куда?
В плейлист из папок?
Или я не так понял?


 
!_SM_!   (2006-07-20 00:41) [40]


> Footballer ©   (20.07.06 00:22) [39]
> Куда?
>
> Footballer ©   (18.07.06 00:15) 
> 1) Как можно "открыть с помощью" сразу несколько файлов и по очереди
> их обработать;

А куда надо?



Страницы: 1 2 вся ветка

Текущий архив: 2006.08.13;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.053 c
2-1153731616
LexXL
2006-07-24 13:00
2006.08.13
Lazarus и Firebird


11-1131392864
Flea
2005-11-07 22:47
2006.08.13
проблема со вкладкой Tabcontrol


1-1151402606
DVM
2006-06-27 14:03
2006.08.13
Проблема с редактированием узлов TreeView


3-1149512548
Still Swamp
2006-06-05 17:02
2006.08.13
Access Violation в IBQuery.Prepare


15-1152946131
SerJaNT
2006-07-15 10:48
2006.08.13
Мастерам JavaScript