Чтение и парсинг одного файла, запись данных во второй. Исправить код - VB

Узнай цену своей работы

Формулировка задачи:

Задание. Есть текстовый файл, он имеет структуру: Имя1 время1 время2. То есть примерно в файле это выглядит так: Файл1 23:34 23:35 Файл2 12:23 12:25 и т.д. Написать файл, обрабатывающий предыдущий файл следующим образом:на выходе он формирует другой текстовый файл, в котором нет повторяющихся имен и он имеет следующую структуру: имя время, где время - разность начала и конца из первого текстового файла, и сумма времени если это имя встречалось несколько раз. Вот код:
Листинг программы
  1. set fso=CreateObject("Scripting.FileSystemObject")
  2. path="Q:\Skript's\Slav"
  3. dim str
  4. dim arr
  5. if fso.FileExists(path & "\log.txt") then
  6. Set File = fso.OpenTextFile(path & "\log.txt")
  7.  
  8. dim Array(1000)
  9. dim s1ArrayH(1000)
  10. dim s2ArrayH(1000)
  11. dim s1ArrayM(1000)
  12. dim s2ArrayM(1000)
  13. dim ntimeH(1000)
  14. dim ntimeM(1000)
  15. i=0
  16. n=0
  17. t1=0
  18. t2=0
  19. Do while Not (File.atEndOfStream)
  20. str=File.ReadLine
  21. arr=split(str," ")
  22.  
  23. for c=0 to UBound(arr)
  24. i=i+1
  25. if i=1 then
  26. n=n+1
  27. Array(n)=arr(c)
  28. end if
  29. if i=2 then
  30. t1=t1+1
  31. s1ArrayH(t1)=arr(c)
  32. end if
  33. if i=3 then
  34. t2=t2+1
  35. s2ArrayH(t2)=arr(c)
  36. i=0
  37. end if
  38. next
  39. Loop
  40.  
  41. for i=0 to t2
  42. arr=split(s1ArrayH(i),":")
  43. for c=0 to UBound(arr)
  44. if(c=0) then s1ArrayH(i)=arr(c) end if
  45. if(c=1) then s1ArrayM(i)=arr(c) end if
  46. next
  47. next
  48.  
  49. for i=0 to t2
  50. arr=split(s2ArrayH(i),":")
  51. for c=0 to UBound(arr)
  52. if(c=0) then s2ArrayH(i)=arr(c) end if
  53. if(c=1) then s2ArrayM(i)=arr(c) end if
  54. next
  55. next
  56.  
  57. for i=0 to t2
  58. ntimeH(i)=s2ArrayH(i)- s1ArrayH(i)
  59. ntimeM(i)= s2ArrayM(i)- s1ArrayM(i)
  60. next
  61.  
  62. for i=0 to t2
  63. for j=0 to t2
  64. if(Array(i)=Array(j)) then
  65. if (i<>j) then
  66. ntimeH(i)=ntimeH(i)+ntimeH(j)
  67. ntimeM(i)=ntimeM(i)+ntimeM(j)
  68. ntimeH(j)=0
  69. ntimeM(j)=0
  70. Array(j)=""
  71. end if
  72. end if
  73. next
  74. next
  75. Set File1 = fso.OpenTextFile(path & "\Oflog.txt",2,true)
  76. for i=0 to t2
  77. if Array(i)<>"" then File1.Writeline(Array(i) &" "& ntimeH(i)&":"&ntimeM(i))
  78. next
  79. else
  80. MsgBox("Фаил Log отсутствует.")
  81. end if
Проблема в том что если строка выглядит например Файл1 01:02 01:01, то он посчитает и получается 1:-8. Нужно исправить где то отсюда
Листинг программы
  1. or i=0 to t2
  2. ntimeH(i)=s2ArrayH(i)- s1ArrayH(i)
  3. ntimeM(i)= s2ArrayM(i)- s1ArrayM(i)
  4. next

Решение задачи: «Чтение и парсинг одного файла, запись данных во второй. Исправить код»

textual
Листинг программы
  1. Option Explicit
  2.  
  3. Dim s2ArrayH(1) As String
  4. Dim s1ArrayH(1) As String
  5. Dim ntimeH(1) As String
  6.  
  7. Private Sub Command1_Click()
  8.  
  9. s2ArrayH(1) = "01:02"  ' Часы : минуты
  10. s1ArrayH(1) = "01:01"  ' Часы : минуты
  11.  
  12. ntimeH(1) = DateDiff("n", s1ArrayH(1), s2ArrayH(1)) 'Разница в минутах
  13.  
  14. MsgBox ntimeH(1)
  15. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 3.846 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы