Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.92/13: Рейтинг темы: голосов - 13, средняя оценка - 4.92
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 95

Открытие файла

20.02.2013, 13:49. Показов 2948. Ответов 29
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте , снова нужна помошь грамотных людей_) у меня есть плейер написанный по видеоуроку , подскажите, как задать и куда прописать команду , чтобы при нажатии на файл мп3 ( открыть с помошью программы) , он воспроизводился в моем плейере . Сейчас при нажатии на файл мп3 просто открывается программа .
Код плейера:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, bass, StdCtrls, Buttons, ExtCtrls,ShellApi;
 
type
  TForm1 = class(TForm)
    OpenDialog1: TOpenDialog;
    Timer1: TTimer;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Panel1: TPanel;
    ScrollBar1: TScrollBar;
    ScrollBar2: TScrollBar;
    ListBox1: TListBox;
    ListBox2: TListBox;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    SpeedButton4: TSpeedButton;
    SaveDialog1: TSaveDialog;
    OpenDialog2: TOpenDialog;
    BitBtn6: TBitBtn;
    BitBtn5: TBitBtn;
    Timer2: TTimer;
    BitBtn7: TBitBtn;
    procedure FormCreate(Sender: TObject);
    procedure sroy(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
      var ScrollPos: Integer);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
    procedure ListBox1KeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure ListBox1DblClick(Sender: TObject);
    procedure ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode;
      var ScrollPos: Integer);
    procedure SpeedButton4Click(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure BitBtn5Click(Sender: TObject);
    procedure BitBtn6Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure BitBtn7Click(Sender: TObject);
  private
    { Private declarations }
  procedure AddFiles(filename:string) ;
  procedure PlayItem(item: integer);
    procedure DropFile(var Msg: TWMDropFiles);message WM_DropFiles;
  public
 
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  stream: Hstream;
  track:boolean;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 
DragAcceptFiles(Handle,true);
if Bass_Init(-1,44100,0,handle,nil)= false then
ShowMessage('Не могу инициализировать поток');
end;
 
procedure TForm1.sroy(Sender: TObject);
begin
BASS_FREE();
 
end;
 
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
if OpenDialog1.Execute=false then exit;
 AddFiles(OpenDialog1.FileName);
 ListBox1.ItemIndex:=ListBox1.Items.Count-1;
 PlayItem(Listbox1.ItemIndex);
end;
 
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if   Bass_ChannelisActive(stream)= Bass_Active_Paused then
BASS_channelPlay(stream,false)
else
PlayItem(ListBox1.ItemIndex)  ;
end;
 
procedure TForm1.BitBtn3Click(Sender: TObject);
begin
Bass_ChannelPause(stream);
end;
 
procedure TForm1.BitBtn4Click(Sender: TObject);
begin
Bass_ChannelStop(stream);
Bass_CHANNELsetPosition(stream,0,0);
end;
 
procedure TForm1.Timer1Timer(Sender: TObject);
begin
ScrollBar1.Position:=Bass_ChannelGetPosition(stream,0);
end;
 
procedure TForm1.ScrollBar1Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
if ScrollCode= scEndScroll then
begin
Bass_ChannelSetPosition(stream,ScrollBar1.Position,0);
Track:=false;
    end
else
Track:=true;
 
end;
 
procedure TForm1.AddFiles(filename: string);
begin
 
   ListBox2.Items.Add(FileName) ;
   ListBox1.Items.Add(ExtractFilename(fileName) );
   if     ListBox1.ItemIndex=-1 then
        ListBox1.ItemIndex:=ListBox1.Items.Count-1;
end;
 
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenDialog1.Execute=false then exit;
AddFiles(OpenDialog1.FileName);
end;
 
procedure TForm1.PlayItem(item: integer);
begin
  if item<0 then exit;
   if stream<>0 then
 Bass_StreamFree(stream);
 
stream:= Bass_streamCreateFile(false,PChar(ListBox2.Items.Strings[item] ),0,0,0);
 
if  stream=0 then
begin
Timer2.Enabled:=False      ;
 
ShowMessage('Ошибка! Файл не загружен!' ) ;
         end
else
begin
Panel1.Caption:=ExtractFileName(ListBox2.Items.Strings[item]);
ScrollBar1.Min:=0;
ScrollBar1.Max:=Bass_ChannelGetLength(stream,0)-1;
ScrollBar1.Position:=0;
BASS_channelPlay(stream,false)
end;
end;
 
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
inindex:integer;
begin
 inindex:=ListBox1.ItemIndex;
  ListBox1.Items.Delete(inindex);
   ListBox2.Items.Delete(inindex);
   if inindex> ListBox1.Items.Count-1 then
   inindex:=ListBox1.Items.Count-1;
   ListBox1.ItemIndex:=inindex ;
end;
 
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=VK_Delete then
SpeedButton2.Click;
end;
 
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
PlayItem(listbox1.ItemIndex);
end;
 
procedure TForm1.ScrollBar2Scroll(Sender: TObject; ScrollCode: TScrollCode;
  var ScrollPos: Integer);
begin
    Bass_SetVolume(Scrollbar2.Position/100);
end;
 
procedure TForm1.SpeedButton4Click(Sender: TObject);
begin
if SaveDialog1.Execute=true then
ListBox2.Items.SaveToFile(SaveDialog1.FileName);
end;
 
procedure TForm1.SpeedButton3Click(Sender: TObject);
var i: integer;
begin
if OpenDialog2.Execute=false then exit;
 
    ListBox2.Items.LoadFromFile(Opendialog2.FileName);
     ListBox1.Items.LoadFromFile (Opendialog2.FileName);
    for i:= 0 to   ListBox1.Items.Count-1 do
       ListBox1.Items.strings[i]:=Extractfilename(ListBox1.Items.strings[i] );
end;
 
procedure TForm1.DropFile(var Msg: TWMDropFiles);
var
CFileName:array[0..MAX_Path] of Char;
 
begin
  try
  if DragQueryFile(Msg.Drop,0,CFileName,MaX_Path) >0 then
  begin
  AddFiles( CFileName);
  Msg.Result:=0;
  end;
  finally
  DragFinish(msg.Drop);
 
  end;
 
end;
 
procedure TForm1.BitBtn5Click(Sender: TObject);
begin
ListBox1.ItemIndex:=ListBox1.ItemIndex+1;
BitBtn2Click(Sender)
end;
 
procedure TForm1.BitBtn6Click(Sender: TObject);
begin
  ListBox1.ItemIndex:=ListBox1.ItemIndex-1;
BitBtn2Click(Sender)
end;
 
procedure TForm1.Timer2Timer(Sender: TObject);
begin
      if BASS_ChannelIsActive(stream) = 0 then begin
    ListBox1.ItemIndex:=ListBox1.ItemIndex+1;
 BitBtn2Click(Sender);
end;
end;
 
procedure TForm1.BitBtn7Click(Sender: TObject);
begin
if Form1.ClientHeight=319then
      Form1.ClientHeight:=75 else
      Form1.ClientHeight:=319;
end;
 
end.
Еще прикладываю проект , чтобы было удобнее смотреть, что и где расположено в нем Архив WinRAR.rar
Распишите все очень подробно, я новенькийв delphi и почти ни чего не знаю( справку к библиотеке смотрю, принцип понимаю, но сделать похожее в своей проге не могу ) . Заранее большое спасибо )
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.02.2013, 13:49
Ответы с готовыми решениями:

Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла
№ 5. Написать текстовый редактор, в котором продемонстрировать открытие файла, сохранение файла, создание нового файла – чистого листа, на...

открытие файла
Всем доброго времени суток. Подскажите как решить такую задачу (если это возможно). На диске есть папка (её адрес известен), в папке...

Открытие файла
Подскажите как сделать, чтобы по нажатию на кнопку открывался файл Word, который находится в тойже папке, что и сама программа?! Зарание...

29
 Аватар для Xotabu4
98 / 98 / 14
Регистрация: 02.02.2013
Сообщений: 328
20.02.2013, 22:47
Студворк — интернет-сервис помощи студентам
Delphi
1
2
3
FileAssociate('.mp3','Имя программы.mp3',ExtractFilePath(ParamStr(0))+'IT.ico');
OnlyOne.Init(Handle);
OpenFile(ParamStr(1));
1
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 95
21.02.2013, 08:44  [ТС]
Цитата Сообщение от Xotabu4 Посмотреть сообщение
Delphi
1
2
3
FileAssociate('.mp3','Имя программы.mp3',ExtractFilePath(ParamStr(0))+'IT.ico');
OnlyOne.Init(Handle);
OpenFile(ParamStr(1));
выдает те же ошибки

Добавлено через 1 час 10 минут
вчера пытался запустить прогу без этих параметров на Delhpi XE3 , она запускается , но при открытии мп3 файла пишет 'Ошибка! Файл не загружен!' , т.е. stream=0 , в Delhpi 7 прога тоже перестала работать , на компе образовался конфликт 2-х программ, удалилил Delhpi XE3 в результате прога стала открываться нормально , пробовал удолять Delhpi 7 т оставлять Delhpi XE3 , но прога не работает нормально.. Может можно в delphi 7 как-то ту ошибку исправить ?
0
 Аватар для Xotabu4
98 / 98 / 14
Регистрация: 02.02.2013
Сообщений: 328
21.02.2013, 17:47
Можно, редактировать модуль что я кидал.
1
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 95
21.02.2013, 18:04  [ТС]
Цитата Сообщение от Xotabu4 Посмотреть сообщение
Можно, редактировать модуль что я кидал.
подскажи, что и где прописывать ? ) где-то находил пример мп3 плейера , где все эти действия выполнялись в 4 строчки , но потом я ее куда-то дел.
0
 Аватар для Xotabu4
98 / 98 / 14
Регистрация: 02.02.2013
Сообщений: 328
21.02.2013, 18:45
Вечером напишу компонент
1
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 95
21.02.2013, 23:23  [ТС]
хорошо) спасибо огромное)

Добавлено через 3 часа 50 минут
всетаки я написал код , но с большим косяком , при открытии нескольких файлов открывается несколько плейеров
открывается в 1-ом плейере если перетащить нужные файлы на значек с приложением .

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
if ParamCount>0 then
begin
      for b:=0 to ParamCount do
 begin
AddFiles( ParamStr(b));
 
 end;
   ListBox1.Items.Delete(0);
   ListBox2.Items.Delete(0);
 
 BitBtn2Click(Sender);
 
 end;
как заставить прогу открывать только 1 экземляр программы ?

Добавлено через 1 минуту
код помещал в formCrate и в OnShow, результат одинаковый

Добавлено через 45 минут
читал темы закрытие формы, делал все так же, но формы он не закрывает
0
 Аватар для Xotabu4
98 / 98 / 14
Регистрация: 02.02.2013
Сообщений: 328
21.02.2013, 23:28
Идешь в Project - ViewSource и делаешь приблизительно такой код.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program Project1;
 
uses
  Forms,
  Windows,
  Dialogs,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
 
begin
  if FindWindow('TForm1', 'Form1') <> 0 then
  begin
    ShowMessage('Экземпляр программы запущен!');
    SetForegroundWindow(FindWindow('TForm1', 'Form1'))
  end
  else
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.
Закрой полностью проект в делфи, иначе увидишь сообщение что он уже открыт.
P.s. Так как начал уже для тебя писать компонент, допишу его все таки, потом кину в эту тему.
1
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 95
21.02.2013, 23:46  [ТС]
Цитата Сообщение от Xotabu4 Посмотреть сообщение
Идешь в Project - ViewSource и делаешь приблизительно такой код.


Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
program Project1;
 
uses
  Forms,
  Windows,
  Dialogs,
  Unit1 in 'Unit1.pas' {Form1};
 
{$R *.res}
 
begin
  if FindWindow('TForm1', 'Form1') <> 0 then
  begin
    ShowMessage('Экземпляр программы запущен!');
    SetForegroundWindow(FindWindow('TForm1', 'Form1'))
  end
  else
  begin
    Application.Initialize;
    Application.CreateForm(TForm1, Form1);
    Application.Run;
  end;
end.
Закрой полностью проект в делфи, иначе увидишь сообщение что он уже открыт.
P.s. Так как начал уже для тебя писать компонент, допишу его все таки, потом кину в эту тему.
так вот куда нужно было кидать)
теперь только 1 экземпляр открывается) классно ) мой код не подошел, открывается только 1 песня
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
if ParamCount>0 then
begin
      for b:=0 to ParamCount do
 begin
AddFiles( ParamStr(b));
 
 end;
   ListBox1.Items.Delete(0);
   ListBox2.Items.Delete(0);
 
 BitBtn2Click(Sender);
 
 end;
Добавлено через 3 минуты
спасибо огромное, что возишься со мной )
0
 Аватар для Xotabu4
98 / 98 / 14
Регистрация: 02.02.2013
Сообщений: 328
22.02.2013, 00:28
Киньте проект, можно в ЛС.

Не по теме:

Пожалуйста, вам помощь а мне опыт))

1
0 / 0 / 0
Регистрация: 15.11.2011
Сообщений: 95
22.02.2013, 00:32  [ТС]
Цитата Сообщение от Xotabu4 Посмотреть сообщение
Киньте проект, можно в ЛС.

Не по теме:

Пожалуйста, вам помощь а мне опыт))

Архив WinRAR.rar вот мой проект)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.02.2013, 00:32

Открытие файла
Нужно отрыть exe файл, в котором есть компонент WebBrowser, и очень странно что содержимое страницы не отображается. Я использовал 2...

Открытие файла
Как в приложение сделать, чтобы название открываемого файла можно было прописать в компоненте Edit, а не выбирать в диалоговом окошке?

Открытие файла из ListBox
Вот что я использую, не открывает файл по двойному нажатию, только после добавления в ListBox файла происходит открытие ранее добавленных...

Открытие pdf файла
Как правильно открыть pdf файлы в delphi? Пробовал открывать через процедуру shellexecute , но выдает ошибку и открывает только doc файлы...

Открытие файла из папки
Привет всем! Подскажите пожалуйста как реализовать следующее: есть 3 папки - 1,2,3, а в них файлы,например 1.doc, 2.doc, 3.doc. как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
Новые блоги и статьи
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
[EasyBuilder Pro] Памятка по разработке для панелей Weintek
ФедосеевПавел 26.08.2026
Памятка по разработке для панелей Weintek ВВЕДЕНИЕ Ранее, при реализации проектов основное внимание уделял разработке управляющей программы для контроллера, а панели оператора доставалось время. . .
Модель по догадкам
anaschu 25.08.2026
Прошло две недели. Я уже рассказывал, как разговаривал с сотрудниками у сортировки и как понял, что главная ветка — не про приёмку, а про отбор. Но тогда я думал, что понял механику. На этой неделе я. . .
Запись в регистр сведений независимо от заполненности табличной части
Maks 25.08.2026
Реализация из решения ниже выполнена на нетиповом документе с несколькими табличными частями, разработанного в КА2. Задача: Обеспечить запись документа в регистр сведений независимо от. . .
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru