請問各位先進
原本我的用意是因為 電影檔的外掛中文有時差 每一句話 時段都相差1分21秒
我只是想要讀檔進來 然後修改成正確的文字這樣而已
-------------------------------------這是外掛文字內容
7
00:01:25,360 --> 00:01:27,360
是不是你殺了索尼耶赫?
8
00:01:30,600 --> 00:01:32,080
是不是你殺了索尼耶赫?
9
00:01:33,400 --> 00:01:35,240
我是上帝的使者
10
00:01:38,760 --> 00:01:40,640
是不是你殺了我祖父?
11
00:01:43,840 --> 00:01:44,560
我是上帝的...
12
00:01:45,760 --> 00:01:49,000
你的每一口呼吸都是罪孽
------------------------------------
修正後應該要
00:00:04,360 --> 00:00:06,360
.
.
.
.
-------------------------------------
我的問題是要用write寫入時就出現錯誤了
請大家幫我看看
-------------------------------------
以下是我的程式碼
Private Sub Command1_Click()
Dim SequenceNo, Aline As String
Dim TextLine, MyStr
Dim a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab As String
aa = \"1\"
ab = \"21\"
Open \"d:\\pukka-tdctcrb.srt\" For Input As #1
Do While Not EOF(1) \' 執行迴圈直到檔尾為止。
Line Input #1, TextLine \' 讀入一行資料並將之指定給變數。
Aline = Mid(TextLine, 3, 1)
If Aline = \":\" Then
a1 = Mid(TextLine, 1, 2)
a2 = Int(Mid(TextLine, 4, 2)) \'\'1
a3 = Int(Mid(TextLine, 7, 2)) \'\'21
a4 = Mid(TextLine, 10, 3)
a5 = \" --> \"
a6 = Mid(TextLine, 18, 2)
a7 = Int(Mid(TextLine, 21, 2)) \'\'\'1
a8 = Int(Mid(TextLine, 24, 2)) \'\'\'21
a9 = Mid(TextLine, 27, 3)
a2 = a2 - 1
a3 = a3 - 21
a7 = a7 - 1
a8 = a8 - 21
If a3 < 0 Then
a3 = 60 - 21 + a3
a2 = a2 - 1
End If
If a8 < 0 Then
a7 = a7 - 1
a8 = 60 - 21 + a8
End If
\'---------------------------------------
If a2 < 10 Then
a2 = \"0\" + Format(a2)
End If
If a3 < 10 Then
a3 = \"0\" + Format(a3)
End If
If a7 < 10 Then
a7 = \"0\" + Format(a7)
End If
If a8 < 10 Then
a8 = \"0\" + Format(a8)
End If
End If
MyStr1 = a1 + \":\" + a2 + \":\" + a3 + \",\" + a4 + a5 + a6 + \":\" + a7 + \":\" + a8 + \",\" + a9
aaaa = Len(MyStr1)
If aaaa > 28 Then
Write #1, MyStr1 \'\'<<--------這行出錯 訊息是不正確得檔案模式
End If
Loop
Close #1
End Sub
----------------------------------------------------------
2006-06-18 06:33:39 · 2 個解答 · 發問者 妹妹背著洋娃娃 2 in 電腦與網際網路 ➔ 軟體
Private Sub Command1_Click()
Dim q1, q2, Aline As String 'q1放飛時間 q2放總字串
Dim TextLine, MyStr
Dim a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab As String
Dim timea, singg As Integer 'timea判別是否為時間 singg '判別是否為一堆符號 或是時間
aa = "1"
ab = "21"
2006-06-18 10:13:28 · update #1
Open "d:\pukka-tdctcrb.srt" For Input As #1
Me.RichTextBox1 = ""
Do While Not EOF(1) ' 執行迴圈直到檔尾為止。
Line Input #1, TextLine ' 讀入一行資料並將之指定給變數。
timea = Int(Len(TextLine)) '判別是否為時間
If timea > 29 Or timea < 29 Then
q1 = TextLine
End If
2006-06-18 10:13:58 · update #2
感謝各位大大
辛苦的幫我解答問題
我已經寫好了 所以大家不用理 那些補充問題
那些補充問題原本我是要貼我的作法 結果卻有300個字的上限
我的解答貼在ck101
http://www.ck101.com/forums/viewthread.php?tid=816485&extra=page%3D1
2006-06-18 10:23:56 · update #3
20點我會給 建議最好 最有幫助的朋友
2006-06-18 10:24:58 · update #4
'您的解答因不是會員而沒辦法進入,以下方式您參考參考Private Sub Command1_Click() Dim Dr As String, S As String, Ts As String, D As Date Dr = "D:\pukka-tdctcrb.srt" '讀取 Open Dr For Input As #1 Do Until EOF(1) Line Input #1, S '找到字串內有"-->"來處理 If InStr(S, "-->") Then '利用DateAdd函數直接減掉81秒 D = DateAdd("s", -81, (Left$(S, 8))) '開始時間 Mid$(S, 1, 8) = Format(D, "hh:mm:ss") D = DateAdd("s", -81, (Mid$(S, 18, 8))) '結束時間 Mid$(S, 18, 8) = Format(D, "hh:mm:ss") End If Ts = Ts & S & vbCrLf Loop Close #1 '輸出 Open Dr For Output As #1 Print #1, Left(Ts, Len(Ts) - 1) Close #1End Sub
2006-06-22 08:57:38 · answer #1 · answered by W.J.S. 7 · 0⤊ 0⤋
先講好....我沒碰 VB 很久了, VB 也移除了, 不過你的問題很有趣, 所以我上 Google 複習了一下, 如果回答有錯, 還請多包含....
我看了你的 code, 直到目前為止, 有幾個地方有問題:
a2 = Int(Mid(TextLine, 4, 2)) ''1
a3 = Int(Mid(TextLine, 7, 2)) ''21
a7 = Int(Mid(TextLine, 21, 2)) '''1
a8 = Int(Mid(TextLine, 24, 2)) '''21
我猜你是要用 Int function 去 convert a string to an integer, 如果是的話, 你應該要用 Val function 來轉換才對
另外我不懂 ''1 和 '''1 是什麼? 你是想寫註解嗎?
我還正在看其他的 code 中..., 如還有發現問題, 我再補充...
2006-06-18 12:16:26 補充:
Dim a1, a2, a3, a4, a5, a6, a7, a8, a9, aa, ab As Stringaa = "1"ab = "21"為何這些都是 String???String 不能做加減乘除 (+ - * /) 吧?!
2006-06-18 08:11:08 · answer #2 · answered by Anonymous · 0⤊ 0⤋