![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте уважаемые мастера Делфи.
Прошу помочь начинающему. Пожалуйста, помогите решить две проблемы: 1. Есть ComboBox в который загружается текстовый файл звуковой разметки для файла звука. Вид текста такой: <t id="1" s="0" l="1329"/> <t id="2" s="2329" l="2061"/> <t id="3" s="5390" l="1605"/> <t id="4" s="7995" l="1126"/> .... где s="7995" - время в миллисекундах от начала файла l="1126" - время в миллисекундах продолжительности звучания выбранного отрезка Суть вопроса - как заставить событие ComboBoxChange разбрасывать значения s="...." в Edit1 а l="...." в Edit2 ? Т.е. автоматически заполнить эдиты (только цифрами) из выбранной комбобоксом строки значениями с определенными метками в текстовом файле - s="..." и l="...". Второй вопрос. 2. Создать кнопку сохранения выбранного участка звука в WAV-файл. Приблизительно код может выглядеть так: Код:
procedure TFormPlayer.CreateWavClick(Sender: TObject);
var
FragmentStart, FragmentEnd: LongInt;
WaveStream: TMemoryStream;
FS: TFileStream;
SoundTrack: array of Integer;
begin
if FileExists('00144.mp3') then
begin
FragmentStart := StrToInt(EditStart.Text);
FragmentEnd := FragmentStart + StrToInt(EditEnd.Text);
MediaPlayer1.FileName := '00144.mp3';
MediaPlayer1.Open;
MediaPlayer1.TimeFormat := tfMilliseconds;
MediaPlayer1.StartPos := FragmentStart;
MediaPlayer1.EndPos := FragmentEnd;
MediaPlayer1.Wait := False;
{WaveStream.SaveToFile('Sound.wav');
WaveStream.Free;}
try
FS := TFileStream.Create('FileName.wav', fmCreate or fmOpenWrite);
FS.Write(SoundTrack[0], SizeOf(Integer) * Length(SoundTrack));
finally
FS.Free;
Finalize(SoundTrack);
end;
end;
end;Сама программа: https://drive.google.com/file/d/1kPH...ew?usp=sharing Вот, помогите, пожалуйста, если есть возможность. |