Чтение и парсинг одного файла, запись данных во второй. Исправить код - VB
Формулировка задачи:
Задание.
Есть текстовый файл, он имеет структуру:
Имя1 время1 время2.
То есть примерно в файле это выглядит так:
Файл1 23:34 23:35
Файл2 12:23 12:25 и т.д.
Написать файл, обрабатывающий предыдущий файл следующим образом:на выходе он формирует другой текстовый файл, в котором нет повторяющихся имен и он имеет следующую структуру:
имя время,
где время - разность начала и конца из первого текстового файла, и сумма времени если это имя встречалось несколько раз.
Вот код:
Проблема в том что если строка выглядит например
Файл1 01:02 01:01, то он посчитает и получается 1:-8. Нужно исправить где то отсюда
Листинг программы
- set fso=CreateObject("Scripting.FileSystemObject")
- path="Q:\Skript's\Slav"
- dim str
- dim arr
- if fso.FileExists(path & "\log.txt") then
- Set File = fso.OpenTextFile(path & "\log.txt")
- dim Array(1000)
- dim s1ArrayH(1000)
- dim s2ArrayH(1000)
- dim s1ArrayM(1000)
- dim s2ArrayM(1000)
- dim ntimeH(1000)
- dim ntimeM(1000)
- i=0
- n=0
- t1=0
- t2=0
- Do while Not (File.atEndOfStream)
- str=File.ReadLine
- arr=split(str," ")
- for c=0 to UBound(arr)
- i=i+1
- if i=1 then
- n=n+1
- Array(n)=arr(c)
- end if
- if i=2 then
- t1=t1+1
- s1ArrayH(t1)=arr(c)
- end if
- if i=3 then
- t2=t2+1
- s2ArrayH(t2)=arr(c)
- i=0
- end if
- next
- Loop
- for i=0 to t2
- arr=split(s1ArrayH(i),":")
- for c=0 to UBound(arr)
- if(c=0) then s1ArrayH(i)=arr(c) end if
- if(c=1) then s1ArrayM(i)=arr(c) end if
- next
- next
- for i=0 to t2
- arr=split(s2ArrayH(i),":")
- for c=0 to UBound(arr)
- if(c=0) then s2ArrayH(i)=arr(c) end if
- if(c=1) then s2ArrayM(i)=arr(c) end if
- next
- next
- for i=0 to t2
- ntimeH(i)=s2ArrayH(i)- s1ArrayH(i)
- ntimeM(i)= s2ArrayM(i)- s1ArrayM(i)
- next
- for i=0 to t2
- for j=0 to t2
- if(Array(i)=Array(j)) then
- if (i<>j) then
- ntimeH(i)=ntimeH(i)+ntimeH(j)
- ntimeM(i)=ntimeM(i)+ntimeM(j)
- ntimeH(j)=0
- ntimeM(j)=0
- Array(j)=""
- end if
- end if
- next
- next
- Set File1 = fso.OpenTextFile(path & "\Oflog.txt",2,true)
- for i=0 to t2
- if Array(i)<>"" then File1.Writeline(Array(i) &" "& ntimeH(i)&":"&ntimeM(i))
- next
- else
- MsgBox("Фаил Log отсутствует.")
- end if
Листинг программы
- or i=0 to t2
- ntimeH(i)=s2ArrayH(i)- s1ArrayH(i)
- ntimeM(i)= s2ArrayM(i)- s1ArrayM(i)
- next
Решение задачи: «Чтение и парсинг одного файла, запись данных во второй. Исправить код»
textual
Листинг программы
- Option Explicit
- Dim s2ArrayH(1) As String
- Dim s1ArrayH(1) As String
- Dim ntimeH(1) As String
- Private Sub Command1_Click()
- s2ArrayH(1) = "01:02" ' Часы : минуты
- s1ArrayH(1) = "01:01" ' Часы : минуты
- ntimeH(1) = DateDiff("n", s1ArrayH(1), s2ArrayH(1)) 'Разница в минутах
- MsgBox ntimeH(1)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д