Форум: "Начинающим";
Текущий архив: 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 dobegin
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