Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.08.13;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.57 MB
Время: 0.042 c
15-1152966609
Ketmar
2006-07-15 16:30
2006.08.13
напомните мне, чем чревато no 80-conductor cable


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


15-1153300296
DillerXX
2006-07-19 13:11
2006.08.13
Помогите с информатикой


2-1153920665
UMU
2006-07-26 17:31
2006.08.13
DateTimePicker и Edit


3-1149323064
АНОНИМ
2006-06-03 12:24
2006.08.13
Закрыть базу Access





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский