|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Заполнить Edit-ы с помощью ComboBox
Здравствуйте уважаемые мастера Делфи.
Прошу помочь начинающему. Пожалуйста, помогите решить две проблемы: 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 Вот, помогите, пожалуйста, если есть возможность. |
#2
|
|||
|
|||
Ну, например, вопользоваться regEx'ом.
Вот такой Код:
[s|l]="\d*" |
Этот пользователь сказал Спасибо lmikle за это полезное сообщение: | ||
Kwon (04.06.2019)
|
#3
|
|||
|
|||
Спасибо за ответ.
Но всё таки, попрошусь ещё. Я очень начинающий, без соответствующего образования, самоучка. Можете Ваш код написать более конкретно, пожалуйста, если не сложно? Там нужно сделать такой автоматический разброс выбранного итэм-индекса комбобокса на: S="(Edit1.Text)" L="(Edit2.Text)" в ComboBoxChange. Конечно, прошу прощения за свою малограмотность в программировании. |