![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите, пожалуйста... [D7, XP]
Footballer © (2006-07-18 00:15:00)Здрасте, вы может помните мы с 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;
Ну вот, в общем и всё, жду ответов, зарание спасибо!
Ketmar (2006-07-19 22:20:00) [21]>Footballer © (19.07.06 19:11) [30]
ну вот. первй вопрос вообще не понят (хотя из контекста, имо, вполне понятно что есть "интерфейс" и к чему оно там).
на третий вопрос ответа не дано вообще. после первого предложения следуют ответы на вопросы, которые вообще не были заданы (у Вас проблема с логическим мышлением, имо).
второй и четвёртый тихо проигнорены.
вопрос номер последний: нафига выпендриваться, если не можешь ответить? я ведь эти вопросы задал далеко не просто так. они имеют самое прямое отношение к теме "shell extensions". собственно, это даже не столько вопросы, сколько хинты. так что вместо демонстрирования своей крутости лучше бы поспрошали-таки гугль...
>Homo Sapiens © (19.07.06 22:07) [32]
думаю, что знания чисто теоретические. %-)
Zeqfreed (2006-07-19 22:09:00) [22]> [32] Homo Sapiens © (19.07.06 22:07)
Да я вам лично, если мне не изменяют память, зрение и Ctrl+F, ничего в пределах дынной ветки и не говорил.
Homo Sapiens (2006-07-19 22:08:00) [23]Удалено модератором
Homo Sapiens (2006-07-19 22:07:00) [24]Удалено модератором
Zeqfreed (2006-07-19 20:41:00) [25]> Говоришь ты умно, а даже вопрос ставишь некорректно... Итерфейс
> чего? Или как это слово переводится с английского на русский?
>
> Рискну предположить, что ты имеешь в виду интерфейс Delphi7.
> Это расположение всех менюшек, сами эти менюшки, кнопки
> и тд. и тп.
Ответ не верный :)
Хотя… Ответов, их много: http://www.google.com/search?client=opera&rls=en&q=define:+Interface&sourceid=opera&ie=utf-8&oe=utf-8
Footballer (2006-07-19 19:11:00) [26]
> Ketmar © (19.07.06 16:57) [28]
> Что такое интерфейс?
Говоришь ты умно, а даже вопрос ставишь некорректно... Итерфейс чего? Или как это слово переводится с английского на русский?
Рискну предположить, что ты имеешь в виду интерфейс Delphi7. Это расположение всех менюшек, сами эти менюшки, кнопки и тд. и тп.
> COM технологии...
При использовании технологии COM между собой взаимодействуют Сервер и Клиент. Сервером может быть как отделное приложение, так и dll.Сервером может быть и отдельный комп, соединённый с клиентом посредством сети.
COM поддерживает 3 основных принципа: инкапсуляцию, наследование и полиморфизм.
Инкапсуляция-это механизм, объединяющий данные и методы, манипулирующие этими данными, а также защищает первое и второе от внешнего вмешательства или неправильного использования.
Наследование- это процесс, в результате которого один компонент может приобретать свойства другого.
Полиморфизм означает, что порождённый объект может изменять какие-то черты, сохраняя
главный принцип.
С тебя хватит. Надеюсь ты понял что это такое. А по гуглю лазить незачем. Те вопросы,
которые ты мне задал, проходят на уроках информатики в школе.
!_SM_! (2006-07-19 18:06:00) [27]Про добавление файлов
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.
Ketmar (2006-07-19 16:57:00) [28]>Footballer © (19.07.06 14:11) [25]
я имел в виду стандартные библиотеки Delphi. в том числе SysUtils и Classes, в которых много интересного. %-)
> Ну почему же рано
по определению. сначала желательно научиться программировать. и разобраться с Delphi. не с "батонокидательством", а с тем, как и что в Delphi работает и что вообще там есть. и зачем. иначе не имеет смысла туда лезь. вот скажите мне, например, что такое "интерфейс"? GUID? поясните механизм работы COM-объектов. или вот: "пространство имён оболочки и работа с ним".
за информацией "что это" можно пойти в гугль.
> А можно этот winamp agent использовать в своих целях, или
> написать самому что-то наподобии этого?
использовать нельзя. написать -- можно. не магическим же конденсированием этот агент длелали? тоже ведь писали...
Zeqfreed (2006-07-19 16:22:00) [29]> [25] Footballer © (19.07.06 14:11)
> написать самому что-то наподобии этого?
Все в твоих руках.
Bambucha (2006-07-19 16:15:00) [30]
> вам туда пока рано.
Я полностью согласен с футболёром
Footballer (2006-07-19 14:11:00) [31]
> ежё и в библиотеках ориентироваться
Извените, но какие библиотеки вы имели в виду?
> вам туда пока рано.
Ну почему же рано, по-моему никогда не рано постигать новые высоты :-)
Был бы благодарен, если бы вы объяснили, что это такое, или ссылку дали...
> В winamp'е этим занимается специальный winamp agent
А можно этот winamp agent использовать в своих целях, или написать самому что-то наподобии этого?
Zeqfreed (2006-07-19 13:52:00) [32]> [22] Footballer © (19.07.06 10:51)
В winamp'е этим занимается специальный winamp agent — маленькое компактное приложеньице, насколько я могу судить. Проще способа нет, AFAIK.
Ketmar (2006-07-19 11:39:00) [33]>Footballer © (19.07.06 01:55) [17]
говорят о том, что Delphi -- это не BP и уж тем более не QB. и знать только язык -- это очень мало. надо ежё и в библиотеках ориентироваться. на что я и пытался намекнуть. теперь не намекаю, говорю открытым текстом.
>Footballer © (19.07.06 10:51) [22]
угу. способ называется shell extensions. вам туда пока рано.
Footballer (2006-07-19 10:51:00) [34]
> ЮЮ © (19.07.06 09:14) [21]
Спасибо за совет, но нельзя как-нибудь попроще? Функцией там какой-нибудь? А то этот способ, как мне кажется сильно грузит проц(2000 раз открывать само себя!!!), и нерациональный.
Вот Winamp, я так думаю, нашёл способ попроще...
ЮЮ (2006-07-19 09:14:00) [35]
> 1) Как можно "открыть с помощью" сразу несколько файлов
> и по очереди их обработать;
Explorer и иже с ними не станут вызвыать так
player.exe file1.mp3 file2.mp3 ... fileN.mp3
он n раз слелает
player.exe file1.mp3
...
player.exe fileN.mp3
Поэтому твое приложение должно:
а) найти запущенную копию "себя", "передать" ему имя файла, полученное в ParamStr(1), fа само погибнуть. Если запущенных копий нет, тогда самому "открыть" этот файл.
6) уметь получать от других копий "себя" имена файлов, которе нужно открыть
antonn (2006-07-19 06:20:00) [36]ArtemESC © (18.07.06 21:35) [10]
из каких это тегов собираешься узнавать...
а я теги в кавычки взял:)
для wav, например, заголовок читается, а время расчитывается так:
(DataSize)*8/SampleRate/BitsPerSample/ChannelModeID{stereo-mono}
Footballer (2006-07-19 02:35:00) [37]
> Што ж это за школа такая?
г. Волгоград
Краснооктябрьский район
Лицей №2
Бывшая школа №132
;-)
grouzd)ev (2006-07-19 02:19:00) [38]
> Между прочим мы с самого начала этот player делали, чтобы
> не сдавать экзамен в 9-ом классе
Што ж это за школа такая? я отделался, хаха, "сайтом". 2 дня, оценивали "дызайн". без просмотра кода конечно =)
> 4 года на QBasic, Pascal тебе о чём-нибудь говорят?..
"2 года вдв!" =)
не сочтите за стеб. автору удачи, только я все равно винампом пользуюсь
---
... we are walking on a thin line and you better avoid the risk ...
Footballer (2006-07-19 01:55:00) [39]
> Ketmar © (18.07.06 23:57) [15]
Между прочим мы с самого начала этот player делали, чтобы не сдавать экзамен в 9-ом классе. Нам уже сказали, что того, что мы сделали, вполне достаточно, но заметь, мы не остановились на этом. Мы пишем всё больше, больше... А всё потому что нам это нравится. И не говори, что программировать - скучно. И я не прошу тебя писать за нас плеер (См. [13]). Я всего лишь прошу ответить на несколько вопросов, возникших при написании плеера.
> Вам же посоветую писать пока программки попроще. лучше те,
> что даются в учебниках. там, где разделы "упражнения"
То, что даётся в разделе "упражнения" уже слишком легко для нас. Ты же не думаешь, что мы на Delphi так, с нуля начали. 4 года на QBasic, Pascal тебе о чём-нибудь говорят?..
Так что повторюсь, я не прошу тебя писать за нас плеер. Я всего лишь прошу ответить на несколько вопросов, возникших при написании плеера, и всё, что тут плохого?
ArtemESC (2006-07-19 00:48:00) [40]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;