Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 29.09.2011
Сообщений: 18
1

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

15.06.2012, 17:33. Просмотров 817. Ответов 1
Метки нет (Все метки)

Задание.
Есть текстовый файл, он имеет структуру:
Имя1 время1 время2.
То есть примерно в файле это выглядит так:
Файл1 23:34 23:35
Файл2 12:23 12:25 и т.д.
Написать файл, обрабатывающий предыдущий файл следующим образом:на выходе он формирует другой текстовый файл, в котором нет повторяющихся имен и он имеет следующую структуру:
имя время,
где время - разность начала и конца из первого текстового файла, и сумма времени если это имя встречалось несколько раз.

Вот код:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
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
Проблема в том что если строка выглядит например
Файл1 01:02 01:01, то он посчитает и получается 1:-8. Нужно исправить где то отсюда
Visual Basic
1
2
3
4
or i=0 to t2
ntimeH(i)=s2ArrayH(i)- s1ArrayH(i)
ntimeM(i)= s2ArrayM(i)- s1ArrayM(i)
next
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
15.06.2012, 17:33
Ответы с готовыми решениями:

Чтение данных с одного txt файла, запись данных во второй txt в определенную позицию
Добрый день, уважаемые форумчане! Нужна ваша помощь. Задача поставлена так: существует файл...

Чтение текстового файла. Парсинг его данных. Создание исключений для данных. Запись свойств объектов в файл
Проблема такая. Есть файл data.txt. В нем например какие-то данные. Landon Donovan, 150, A...

Чтение и запись из одного файла
все вроде норм но почему после вывода получаю краш , извините есле что не так только начал читать...

Запись и чтение одного и того же файла
Помогите разобраться в вопросе: написал прогу которая должна была создать текстовый файл, записать...

1
es geht mir gut
11218 / 4695 / 1178
Регистрация: 27.07.2011
Сообщений: 11,425
15.06.2012, 21:11 2
Функция Format
Форматирование величин дат и времени
Стандартные форматы дат и времени
Пользовательские форматы дат и времени
General Date
Отображает дату и\или время.Если число имеет и целую, и дробную часть, то изображаются и дата, и время (например, 04.03.93 17:34); если у числа нет дробной части, то отображается только дата (например, 04.03.93); если у числа нет целой части, то отображается только время (например, 17:34). Фактическое изображение даты и времени определяется системной настройкой

A="27.07.66"
Print Format(A,"General Date") ' возвратит 27.07.66
Long Date
Отображает дату согласно длинному системному формату даты

A="27.07.66"
Print Format(A,"Long Date") ' возвратит 27 Июль 1966 г.
Medium Date
Отображает дату согласно среднему формату даты, установленному для языковой версии системы

A="27.07.66"
Print Format(A,"Medium Date") ' возвратит 27-июл-66
Short Date
Отображает дату согласно краткому системному формату даты

A="27.07.66"
Print Format(A,"Short Date") ' возвратит 27.07.66
Long Time
Отображает время согласно длинному системному формату времени: часы, минуты и секунды

A=0.25
Print Format(A,"Long Time") ' возвратит 6:00:00
Medium Time
Отображает значение времени в 12-часовом формате: часы, минуты и индикатор "AM/PM"(если есть в системных установках)

A=0.6
Print Format(A,"Medium Time") ' возвратит 02:24
Short Time
Отображает значение времени в 24-часовом формате

A=0.6
Print Format(A,"Short Time") ' возвратит 14:24
Пользовательские форматы дат и времени
:
Разделитель компонентов времени. В некоторых национальных настройках применяется другой символ. Разделитель компонентов времени используется для разделения компонентов времени (часов, минут и секунд). Фактический символ, используемый в качестве разделителя компонентов времени, определяется текущей национальной настройкой. В России в качестве разделителя компонентов времени используется двоеточие
/
Разделитель компонентов даты. В некоторых национальный настройках применяется другой символ. Разделитель компонентов даты используется для разделения компонентов даты (дня, месяца и года). Фактический символ, используемый в качестве разделителя компонентов даты, определяется текущей национальной настройкой. В России в качестве разделителя компонентов даты используется точка
c
Отображает дату как ddddd и время как ttttt. Если у числа нет дробной части, то отображается только дата; если у числа нет целой части, то отображается только время
d
Выводит номер дня в месяце, содержащий одну или две цифры (1 – 31)
dd
Выводит номер дня в месяце, содержащий одну или две цифры (01 – 31)
ddd
Выводит сокращенное название дня недели (Пн– Вс)
dddd
Выводит полное название дня недели (Понедельник– Воскресенье)
ddddd
Отображает соответствующую числу полную дату (день, месяц и год) согласно краткому системному формату даты.Эквивалентно стандартному формату Short Date
dddddd
Отображает соответствующую числу полную дату (день, месяц и год) согласно длинному системному формату даты.Эквивалентно стандартному формату Long Date
w
Выводит номер дня недели (по умолчанию, от 1 для воскресенья до 7 для субботы),какой день считать первым определяется аргументом FirtsDayOfWeek
ww
Выводит номер недели года (1 – 54),какую недель считать первой определяется аргументом FirtsWeekOfYear
m
Выводит номер месяца, содержащий одну или две цифры (1 – 12). Если символ m следует сразу после символов h или hh, выводится число минут
mm
Выводит номер месяца, содержащий две цифры (01 – 12). Если символ m следует сразу после символов h или hh, выводится число минут
mmm
Выводит сокращенное название месяца (Янв – Дек)
mmmm
Выводит полное название месяца (Январь – Декабрь)
q
Выводит номер квартала года (1 – 4)
y
Выводит номер дня года (1 – 366)
yy
Выводит номер года, состоящий из двух цифр (00 – 99)
yyyy
Выводит номер года, состоящий из трех или четырех цифр (100 – 9999)
h
Выводит число часов, состоящее из одной или двух цифр (0 – 23)
hh
Выводит число часов, состоящее из двух цифр (00 – 23)
n
Выводит число минут, состоящее из одной или двух цифр (0 – 59)
nn
Выводит число минут, состоящее из двух цифр (00 – 59)
s
Выводит число секунд, состоящее из одной или двух цифр (0 – 59)
ss
Выводит число секунд, состоящее из двух цифр (00 – 59)
ttttt
Отображает полное время (часы, минуты и секунды) согласно текущему системному формату времени. В Microsoft Windows формат времени по умолчанию имеет вид "h:mm:ss"
AM/PM
Использует 12-часовую шкалу, добавляя прописные буквы "AM" (до полудня) или "PM" (между полуднем и полуночью)
am/pm
Использует 12-часовую шкалу, добавляя строчные буквы "am" (до полудня) или "pm" (между полуднем и полуночью)
A/P
Использует 12-часовую шкалу, добавляя прописные буквы "A" (до полудня) или "P" (между полуднем и полуночью)
a/p
Использует 12-часовую шкалу, добавляя строчные буквы "a" (до полудня) или "p" (между полуднем и полуночью)
AMPM
Использует 12-часовую шкалу, добавляя текстовую константу, добавляя текстовую константу, заменяющую в текущей системе индикаторы "AM" (до полудня) или "PM" (между полуднем и полуночью). Регистр изображаемой текстовой строки определяется соответствующими системными настройками. В Microsoft Windows по умолчанию используется формат "AM/PM"


Добавлено через 1 час 13 минут
Посчитать разницу во времени.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
15.06.2012, 21:11

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Чтение из файла, исправить код
Есть програма, которая должна создать папку, потом в файл и записать в файл, информацию а потом...

Чтение текста из файла, удаление каждой второй строки (\n), запись в файл
Дана строка у текстовом файле input.txt: Teachers TV's resources Have generated views Teachers...

Чтение из одного файла и запись в другой файл winAPI c++
Всем привет уже битый час туплю. Короче нужно переписать всю информацию из одного файла в другой(не...

Чтение файла, чтение названия папки где находится файл, запись данных на PHP
Допустим у нас есть структура с папками типа Large -&gt; Vehicles -&gt; Firetruck_0 В этой папке лежит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.