Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Программа и интерфейс
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 07.02.2010, 13:02
= FFFFh = = FFFFh = вне форума
Прохожий
 
Регистрация: 07.02.2010
Сообщения: 9
Репутация: 10
Радость Звуковой редактор

От нефиг делать Пишу фсякую ерундень. Вот решил написать звуковаой редактор типа NeroWaveEditor. Т.е. чтобы был функционален, прост в обращении и быстр. Начал писать. Пока только для wav. Кто хочет принять участие? Условие одно. Всё должно быть строго OpenSource, просто не льблю скрывать что-то от других.
Ответить с цитированием
  #2  
Старый 07.02.2010, 13:41
= FFFFh = = FFFFh = вне форума
Прохожий
 
Регистрация: 07.02.2010
Сообщения: 9
Репутация: 10
Лампочка кому не лень проверьте у ся на дельфах. я пишу под 7.0

Итак, приступлю.
Определим сначала с чем мы будем иметь дело:
Исходный файл: wav(потом что-нить другое добавлю)
Цель: Загрузить файл в прогу.

Код:
//Тип, описывающий формат:

type TWaveHeader = record//будет заголовок нашего файла
 ChunkRiff:       array [0..3] of char;//'RIFF'
 RiffLen:      longint;
 ChunkWave:       array [0..3] of char;//'WAVE'
 ChunkFmt:        array [0..3] of char; //'fmt '
 InfoLen:      longint;
 WaveType:     smallint;//(1=pcm) метод сжатия
 Ch:           smallint;
 Freq:         longint;
 BytesPerSec:  longint;
 align:        smallint;
 Bits:         smallint;
end;

type TWaveHeaderData = record
 ChunkData:       array[0..3] of char;//'data'
 DataLen:      longint;
end;

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


var main: TMain;
    WavFile,WavMemory:TStream;
    Hdr:TWaveHeader;
    hdrd:TWaveHeaderData;


Procedure OpenWavFile(FileName:String);
var n: integer;
begin
WavFile:=TFileStream.Create(filename,fmOpenRead,fmShareDenyNone);
WavMemory:=TMemoryStream.Create;
WavMemory.CopyFrom(WavFile,WavFile.Size);
WavFile.Free;
WavMemory.Position:=0;

WavMemory.Read(Hdr,sizeof(hdr));   // читаем заголовок

WavMemory.Position:=0;
wavmemory.Read(hdrd,sizeof(hdrd));

n:=wavmemory.Position;

while hdrd.idData<>'data' do begin
 n:=n+1;
 wavmemory.Position:=n-4;
 wavmemory.Read(hdrd,sizeof(hdrd));

 if wavmemory.Position>1024 then begin //вот тут заминочка, пока не решил...
  ShowMessage('Неподдерживаемый формат файла!');
  WavMemory.Free;
  exit;
 end

end;

end;

procedure Tmain.openfileClick(Sender: TObject);
begin
if opendialog1.Execute then
   openWavFile(opendialog1.FileName);
end;
Код:
Admin: Пользуемся тегами!

Фсё! Данные файла успешно заносятся в поток!

Люди, не спите, подключайтесь!!!

Последний раз редактировалось Admin, 07.02.2010 в 14:20.
Ответить с цитированием
  #3  
Старый 09.02.2010, 12:19
= FFFFh = = FFFFh = вне форума
Прохожий
 
Регистрация: 07.02.2010
Сообщения: 9
Репутация: 10
По умолчанию

Чё, никто не заинтересован?
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter