![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите текст программы, а может только процедуру [D7, WinXP]
tamagavk © (2004-06-20 12:37:00)Здравствуйте уважаемые любители Delphi!
Помогите и подскажите, как написать прогу(а может только процедуру),которая при определенных действиях,например,при нажатии кнопки, воспроизводила WAV файл, но не откуда-то с жесткого диска, а из памяти программы. Все ответы и предполо-
жения присылать по адресу tamagavk@comail.ru Зараннее благодарен!
Kind (2004-06-21 22:19:00) [1]Это что первоапрельские шутки тут? :) Дык уже поздно!
tamagavk - если ты прикалываешься то Орехи это оценят, а если нет то ... наверно тебя неправильно понимают из-за того, что ты неправильно формулируешь вопрос.
WAV файл пристыковывается к твоему EXEшнику и остаётся в нём навсегда!
P.S. Единственное, что мне не понятно до сих пор это вот что - А зачем тебе удалять этот WAV файл??? :)
Anatoly Podgoretsky (2004-06-21 11:39:00) [2]А черт его знает, ты же код не приводишь.
tamagavk (2004-06-21 11:35:00) [3]УРААААА!НАКОНЕЦ-ТО!Получилось!Просидел полночи и добил этот ресурс.Все работает. Всем спасибо за помощь.
P.S
Получается Wav файл заносится в память ресурса и остается там навсегда и при каждом запуске программы и соответствующих действий он загружается из ресурса?Верно?
Anatoly Podgoretsky (2004-06-21 09:22:00) [4]Само, начиная с Д5
Огромное Кулясище (2004-06-21 00:52:00) [5]2 Anatoly Podgoretsky:
А компилировтаь кто будет? Неужели само?
Anatoly Podgoretsky (2004-06-21 00:12:00) [6]Огромное Кулясище (20.06.04 23:04) [26]
Ну почему, в .rc файле
RESNAME RETYPE RESPATH
и подключить к проекту и это все.
tamagavk (2004-06-20 23:59:00) [7]Я так понял, что myres.inc , myres.rc и myres.bat надо создавать в Блокноте. Я запускаю bat файл и где искать myres.res. Затем эти все файлы помещать в папку с программой Верно? Но программа не работает
Огромное Кулясище (2004-06-20 23:04:00) [8]2 tamagavk:
Все твои пожелания и предложения Anatoly Podgoretsky реализованы на той странице, что я тебе посоветовал. Никто тебе в двух словах не сможет объяснить, как создать ресурс. Заодно читай ссылку из }{enon © (20.06.04 21:02) [15].
tamagavk (2004-06-20 23:00:00) [9]Так я и спрашиваю последовательность моих действий:как создавать ресурс и т.п.
Anatoly Podgoretsky (2004-06-20 22:43:00) [10]Помести его в ресурсы и затем играй или из памяти или напрямую из ресурса.
tamagavk (2004-06-20 22:35:00) [11]Я понял, что это не то, что я хочу. Вы все имеете ввиду не закрывая программу удалять Wav файл и после нажимать на кнопку. Это получается.Мне НАДО чтобы я закрыл программу, файл удалил, затем снова запустил программу и файл воспроизводился. Тут наверно не обойтись без ресурсов. Но этого я вообще не знаю.
Растолкуйте, пожайлуста, последовательность моих действий(только не надо указывать на страницу, там много всего нового и я ничего не понял).Желательно с примером, например,тот же проигрыш WAV файла
}{enon (2004-06-20 22:28:00) [12]Пристрелите меня [ по Интернету :) ]!
Если в вопросе "из памяти программы" значит, что файл не должен валяться на диске, а должен быть запрятан где-то в самой программе, то это делается через ресурсы (смотри ссылку выше). Через "tada := " и т.д. ты не чего не зделаешь, как не издевайся над кодом, т.к. файл должен существовать хоть где-то, а раз его нет на диске, то "где-то" - это твой экзешник.
tamagavk (2004-06-20 22:20:00) [13]Так а если я стираю эти две строки все равно не помогает
Огромное Кулясище (2004-06-20 22:12:00) [14]2 tamagavk:
Запусти программу, не знакрывая её удали файл и нажми кнопку. Когда ты закрываешь программу выполняется код:
finalization
tada := ''; // Releases the memory taken by the string
т.е. файл выгружается из памяти. Естественно, что при старте программы вновь этот файл понадобится на диске.
Огромное Кулясище (2004-06-20 22:10:00) [15]2 }{enon:
Блин! Я же сразу не понял, что он удаляет файл и потом ещё раз запускает программу!!!!
}{enon (2004-06-20 22:05:00) [16]2 Огромное Кулясище
Блин, объясни мне КАК он играет, если при инициализации LoadFile(tada) вызывает ошибку, т.к. файл не существует?
tamagavk (2004-06-20 22:00:00) [17]Напмсал точно также. Сначала все работает.После удаления Wav файла запускаю программу и она мне выдает: что типа выполнила недопустимую ошибку и будет закрыта, а затем еще одна ошибка:
"Runtime error 217 at 0041576A"
В чем дело?
Огромное Кулясище (2004-06-20 21:35:00) [18]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.
На форме одна кнопка. Так вот, я запустил, проверил что играет. Удалил файл - нажал кнопку и всё играет. Так что делай выводы.
}{enon (2004-06-20 21:02:00) [19]Сорри, временно отключился. Про работу с ресурсами читай тут:
http://blackman.wp-club.net/lection/resurs.php
tamagavk (2004-06-20 20:45:00) [20]Ну же, мастера, Расскажите как создать ресурс и использовать его в программе