Здравствуйте уважаемые мастера Делфи.
Прошу помочь начинающему.
Пожалуйста, помогите решить две проблемы:
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
Вот, помогите, пожалуйста, если есть возможность.