![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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
|
||||
|
||||
|
Цитата:
s - это строковая переменная. Какие в ней могут быть "все числа"? |
|
#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
|
|||
|
|||
|
Цитата:
|