![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#76
|
|||
|
|||
![]() Цитата:
|
#77
|
||||
|
||||
![]() Цитата:
И почитайте об этом хотя бы здесь: http://ru.wikipedia.org/wiki/Little-endian |
#78
|
|||
|
|||
![]() Цитата:
|
#79
|
||||
|
||||
![]() Цитата:
|
#80
|
|||
|
|||
![]() Я сейчас нашел способ автоматического ввода, пока что NumSamples. Сделал я это так:
Код:
s2:=i; s:=IntToStr(s2); Form1.Memo1.Lines.Add(s); 1 FFFA 2 000A 3 FFEE 4 0025 5 FE90 ... 1075 000A 1076 001A 1077 000A 1078 000C 1079 FFFE Теперь вопрос: как вывести максимальное значение (i)? (В данном случае 1079). Мне кажется так можно надежно получить NumSamples На выводе написать: Код:
NumSamples := s; |
#81
|
||||
|
||||
![]() Цитата:
|
#82
|
|||
|
|||
![]() Цитата:
|
#83
|
||||
|
||||
![]() Цитата:
![]() |
#84
|
|||
|
|||
![]() Цитата:
|
#85
|
||||
|
||||
![]() Цитата:
|
#86
|
|||
|
|||
![]() Цитата:
Код:
NumSamples:= i; Код:
Inc(i); s2:=i; Код:
NumSamples:= s2; Получается файл 44 byte!!! Без сэмплов и с 2 строчками заголовка. Что делать - НЕ ЗНАЮ Пожалуйста, ПОМОГИТЕ!!!! |
#87
|
||||
|
||||
![]() Цитата:
В каком месте вы считываете конечное значение переменной i? Считывать её нужно в конце этого цикла: Код:
sample := 0; i := 0; while wChankSize >= (SampleSize * Header.wChannels) do begin if Header.wBlockAlign > 0 then begin n := f.Position mod Header.wBlockAlign; if n > 0 then begin n := Header.wBlockAlign - n; f.Seek(n, soFromCurrent); Dec(wChankSize, n); if wChankSize < (SampleSize * Header.wChannels) then Break; end; end; Inc(i); s1 := ''; for chanel := 1 to Header.wChannels do begin f.ReadBuffer(sample, SampleSize); Dec(wChankSize, SampleSize); s1 := s1 + IntToHex(sample, SampleSize * 2); end; Form1.Memo1.Lines.Add(s1); end; exit; А вот если ещё почитать внимательно справку здесь, то для звука в формате PCM вышеприведённый цикл можно значительно упростить: Код:
sample := 0; NumSamples := wChankSize div (SampleSize * Header.wChannels); for i := 1 to NumSamples do begin s1 := ''; for chanel := 1 to Header.wChannels do begin f.ReadBuffer(sample, SampleSize); s1 := s1 + IntToHex(sample, SampleSize * 2); end; Form1.Memo1.Lines.Add(s1); end; |
#88
|
|||
|
|||
![]() Цитата:
Код:
s2:=i; Последний раз редактировалось Dmitry_DM, 16.08.2012 в 00:50. |
#89
|
||||
|
||||
![]() Цитата:
|
#90
|
|||
|
|||
![]() Цитата:
|