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

Вниз

Подскажите текст программы, а может только процедуру   Найти похожие ветки 

 
tamagavk   (2004-06-20 12:37) [0]

Здравствуйте уважаемые любители Delphi!
Помогите и подскажите, как написать прогу(а может только процедуру),которая при определенных действиях,например,при нажатии кнопки, воспроизводила WAV файл, но не откуда-то с жесткого диска, а из памяти программы. Все ответы и предполо-
жения присылать по адресу tamagavk@comail.ru   Зараннее благодарен!


 
Anatoly Podgoretsky ©   (2004-06-20 13:02) [1]

PlaySound


 
Огромное Кулясище   (2004-06-20 13:09) [2]

2 Anatoly Podgoretsky:

Вы имеете ввиду флаг SND_RESOURCE, т.е. проигрывание из ресурса как проигрывание из памяти?


 
Anatoly Podgoretsky ©   (2004-06-20 13:14) [3]

SND_MEMORY


 
tamagavk   (2004-06-20 13:47) [4]

A можно поподробнее насчет PlaySound или SND_Memory(я имею ввиду текст)Я ведь начинающий.


 
Огромное Кулясище   (2004-06-20 14:16) [5]

> SND_MEMORY

Прикольно, не знало раньше.

>A можно поподробнее насчет PlaySound или SND_Memory(я имею ввиду текст)Я ведь начинающий.

Э-э, побачь тута:
http://www.latiumsoftware.com/en/delphi/00024.php


 
tamagavk   (2004-06-20 18:02) [6]

Насчет PlaySound сделал все,как написано, но звука нетууу. В чем дело напишите поподробнее


 
tamagavk   (2004-06-20 18:13) [7]

Кстати, пишу методом PlaySound как указано на предложенной выше странице, но если стереть файл с жесткого диска, звука не будет!!
Что такое SND_Memory?  Может оно поможет?  Напишите куда надо это вставлять


 
Огромное Кулясище   (2004-06-20 18:50) [8]

>Кстати, пишу методом PlaySound как указано на предложенной выше странице

На предложеной выше странице предлагается метод sndPlaySound, если уж быть точным.

Далее, ты уверен, что написал так:

uses SysUtils, Classes, MMSystem;

var
 tada: string;

function LoadFile(const FileName: TFileName): string;
begin
 with TFileStream.Create(FileName,
     fmOpenRead or fmShareDenyWrite) do begin
   try
     SetLength(Result, Size);
     Read(Pointer(Result)^, Size);
   except
     Result := "";  // Deallocates memory
     Free;
     raise;
   end;
   Free;
 end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 sndPlaySound(Pointer(tada), SND_MEMORY
   Or SND_NODEFAULT Or SND_ASYNC);
end;

initialization
 tada := LoadFile("C:\Windows\Media\Tada.wav");

finalization
 tada := ""; // Releases the memory taken by the string
end.

Как видишь, SND_MEMORY уже вставлено.


 
tamagavk   (2004-06-20 19:13) [9]

Все написал как вы сказали, но ведь все равно идет обращение к файлу на жестком диске?Стоит мне переместить мой WAV файл в другое место жесткого диска, так проект не запускается и вылетает ошибка!


 
}{enon ©   (2004-06-20 19:25) [10]

А с какой стати он будет запускаться, если ты переместил файл? Он не может найти файл, который нужно загрузить в память, потому и выдает ошибку. Вот если ты запустишь программу, а ПОТОМ переместишь файл, то все будет работать. WAV играется из памяти, но сам по себе он там не окажется - его нужно или загрузить, или записать.


 
tamagavk   (2004-06-20 19:31) [11]

Так я запускал программу не один раз, все игралось, но после перемещения перестало проигрываться


 
}{enon ©   (2004-06-20 19:59) [12]

... то все будет работать В ТОЛЬКО ЧТО ЗАПУЩЕННОЙ КОПИИ ПРОГРАММЫ. Ну не может прога загрузить несуществующий файл. Видимо ты неверно сформулировал вопрос, и звук надо запускать не из памяти а из ресурса.


 
tamagavk   (2004-06-20 20:03) [13]

Наверно,скажите тогда метод загрузки из ресурса. Но только я с ним никогда не работал, объясните поподробнее или пришлите на e-mail   tamagavk@comail.ru


 
tamagavk   (2004-06-20 20:45) [14]

Ну же, мастера, Расскажите как создать ресурс и использовать его в программе


 
}{enon ©   (2004-06-20 21:02) [15]

Сорри, временно отключился. Про работу с ресурсами читай тут:
http://blackman.wp-club.net/lection/resurs.php


 
Огромное Кулясище   (2004-06-20 21:35) [16]

2 tamagavk:

Вот модуль:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, MMSystem;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

function LoadFile(const FileName: TFileName): string;

var
 Form1: TForm1;
 tada: String;

implementation

{$R *.DFM}

function LoadFile(const FileName: TFileName): string;
begin
with TFileStream.Create(FileName,
    fmOpenRead or fmShareDenyWrite) do begin
  try
    SetLength(Result, Size);
    Read(Pointer(Result)^, Size);
  except
    Result := "";  // Deallocates memory
    Free;
    raise;
  end;
  Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
sndPlaySound(Pointer(tada), SND_MEMORY
  Or SND_NODEFAULT Or SND_ASYNC);
end;

initialization
tada := LoadFile("C:\s1.wav");

finalization
tada := ""; // Releases the memory taken by the string

end.

На форме одна кнопка. Так вот, я запустил, проверил что играет. Удалил файл - нажал кнопку и всё играет. Так что делай выводы.


 
tamagavk   (2004-06-20 22:00) [17]

Напмсал точно также. Сначала все работает.После удаления Wav файла запускаю программу и она мне выдает:  что типа выполнила недопустимую ошибку и будет закрыта, а затем еще одна ошибка:
"Runtime error 217 at 0041576A"
В чем дело?


 
}{enon ©   (2004-06-20 22:05) [18]

2 Огромное Кулясище

Блин, объясни мне КАК он играет, если при инициализации LoadFile(tada) вызывает ошибку, т.к. файл не существует?


 
Огромное Кулясище   (2004-06-20 22:10) [19]

2 }{enon:

Блин! Я же сразу не понял, что он удаляет файл и потом ещё раз запускает программу!!!!


 
Огромное Кулясище   (2004-06-20 22:12) [20]

2 tamagavk:

Запусти программу, не знакрывая её удали файл и нажми кнопку. Когда ты закрываешь программу выполняется код:

finalization
tada := ""; // Releases the memory taken by the string

т.е. файл выгружается из памяти. Естественно, что при старте программы вновь этот файл понадобится на диске.


 
tamagavk   (2004-06-20 22:20) [21]

Так а если я стираю эти две строки все равно не помогает


 
}{enon ©   (2004-06-20 22:28) [22]

Пристрелите меня [ по Интернету :) ]!
Если в вопросе "из памяти программы" значит, что файл не должен валяться на диске, а должен быть запрятан где-то в самой программе, то это делается через ресурсы (смотри ссылку выше). Через "tada := " и т.д. ты не чего не зделаешь, как не издевайся над кодом, т.к. файл должен существовать хоть где-то, а раз его нет на диске, то "где-то" - это твой экзешник.


 
tamagavk   (2004-06-20 22:35) [23]

Я понял, что это не то, что я хочу. Вы все имеете ввиду не закрывая программу удалять Wav файл и после нажимать на кнопку. Это получается.Мне НАДО чтобы я закрыл программу, файл удалил, затем снова запустил программу и файл воспроизводился. Тут наверно не обойтись без ресурсов. Но этого я вообще не знаю.
Растолкуйте, пожайлуста, последовательность моих действий(только не надо указывать на страницу, там много всего нового и я ничего не понял).Желательно с примером, например,тот же проигрыш WAV файла


 
Anatoly Podgoretsky ©   (2004-06-20 22:43) [24]

Помести его в ресурсы и затем играй или из памяти или напрямую из ресурса.


 
tamagavk   (2004-06-20 23:00) [25]

Так я и спрашиваю последовательность моих действий:как создавать ресурс и т.п.


 
Огромное Кулясище   (2004-06-20 23:04) [26]

2 tamagavk:

Все твои пожелания и предложения Anatoly Podgoretsky реализованы на той странице, что я тебе посоветовал. Никто тебе в двух словах не сможет объяснить, как создать ресурс. Заодно читай ссылку из }{enon © (20.06.04 21:02) [15].


 
tamagavk   (2004-06-20 23:59) [27]

Я так понял, что  myres.inc , myres.rc и myres.bat надо создавать в Блокноте. Я запускаю bat файл и где искать myres.res. Затем эти все файлы помещать в папку с программой Верно? Но программа не работает


 
Anatoly Podgoretsky ©   (2004-06-21 00:12) [28]

Огромное Кулясище   (20.06.04 23:04) [26]
Ну почему, в .rc файле
RESNAME RETYPE RESPATH
и подключить к проекту и это все.


 
Огромное Кулясище   (2004-06-21 00:52) [29]

2 Anatoly Podgoretsky:

А компилировтаь кто будет? Неужели само?


 
Anatoly Podgoretsky ©   (2004-06-21 09:22) [30]

Само, начиная с Д5


 
tamagavk   (2004-06-21 11:35) [31]

УРААААА!НАКОНЕЦ-ТО!Получилось!Просидел полночи и добил этот ресурс.Все работает. Всем спасибо за помощь.

P.S
Получается Wav файл заносится в память ресурса и остается там навсегда и при каждом запуске программы и соответствующих действий он загружается из ресурса?Верно?


 
Anatoly Podgoretsky ©   (2004-06-21 11:39) [32]

А черт его знает, ты же код не приводишь.


 
Kind ©   (2004-06-21 22:19) [33]

Это что первоапрельские шутки тут? :) Дык уже поздно!
tamagavk - если ты прикалываешься то Орехи это оценят, а если нет то ... наверно тебя неправильно понимают из-за того, что ты неправильно формулируешь вопрос.
WAV файл пристыковывается к твоему EXEшнику и остаётся в нём навсегда!

P.S. Единственное, что мне не понятно до сих пор это вот что - А зачем тебе удалять этот WAV файл??? :)



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

Форум: "Media";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.035 c
1-1093079823
far
2004-08-21 13:17
2004.09.05
Проблема с фиксингом глобальных ссылок при десериализации формы


4-1090246123
Sasha73
2004-07-19 18:08
2004.09.05
Убрать чужую иконку из SystemTray ?


1-1093152385
Fktrc
2004-08-22 09:26
2004.09.05
Пауза в TThread


14-1092746458
DillerXX
2004-08-17 16:40
2004.09.05
Пожалуйста, подскажите прогу для закачки полифонии на Siemens C62


4-1090158433
Dio
2004-07-18 17:47
2004.09.05
Работа с Hard





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский