Rem Shift time
Rem Язык Visual Basic 5.0
Rem Смещение тайминга субтитров *.srt
Option Explicit
Private Sub C1_Click()
Dim a As String: Rem - Буферный массив хранения символов
Dim b, c, d, e As String
Dim g As Long: Rem - Указатель на считываемый символ
Dim h As Long: Rem - Время смещения в миллисекундах
Dim i As Long: Rem - Смещаемое время в миллисекундах
Dim j, k, l, m As Long
Rem - Инициализация
g = 1
h = Val(T2) * 1000
T3 = ""
10 Rem - Цикл обработки данных блока T1
a = Mid(T1, g, 12)
If Mid(a, 3, 1) = ":" And Mid(a, 6, 1) = ":" And Mid(a, 9, 1) = "," Then
Rem - Собираем из строки число
b = Mid(a, 1, 2)
c = Mid(a, 4, 2)
d = Mid(a, 7, 2)
e = Mid(a, 10, 3)
i = ((b * 60 + c) * 60 + d) * 1000 + e
i = i + h
If i < 0 Then i = 0
Rem - Разбираем число на строку
m = i
l = m \ 1000: m = m - l * 1000
k = l \ 60: l = l - k * 60
j = k \ 60: k = k - j * 60
If j < 10 Then T3 = T3 & "0"
T3 = T3 & j & ":"
If k < 10 Then T3 = T3 & "0"
T3 = T3 & k & ":"
If l < 10 Then T3 = T3 & "0"
T3 = T3 & l & ","
If m < 100 Then T3 = T3 & "0"
If m < 10 Then T3 = T3 & "0"
T3 = T3 & m
g = g + 12
Else
T3 = T3 + Mid(a, 1, 1)
g = g + 1
End If
Rem - Если блок T1 не закончился, то повторение цикла
If Len(a) > 11 Then GoTo 10
T3 = T3 + Mid(a, 2, 10)
End Sub
Комментарии 13
https://drive.google.com/open?id=1n3C4mODzuICusItGDZPMxGgeJp7rwr_u
Терпеть не могу списывать, если могу сделать сам.
У меня есть аналогичная программа, консольное приложение на Visual C++ 9. Но там я сделал только на целое число секунд. Поэтому захотел переделать, но плохо получилось...
Вообще если вы решаете задачу сугубо в академических целях, то это одно дело. Но если вам нужно практическое решение быстро, то совсем не обязательно заниматься математикой времени. Обычно стандартная библиотека уже содержит много полезных функций работы со временем. Уверен, что и в вашей версии бэйсика тоже есть такие.
з.ы.: Читать чужой код очень полезно. Это тоже такая форма обучения. Вы можете подсмотреть какой то трюк и взять на вооружение. Это не значит что вы списали. Это значит вы научились использовать новый для себя инструмент.