С наступающим Новым годом! Форум программистов, компьютерный форум, киберфорум
Наши страницы
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
Paul_T
0 / 0 / 0
Регистрация: 11.03.2016
1

Как правильно побайтно обработать текстовый файл?

31.10.2010, 16:50. Просмотров 877. Ответов 2
Метки нет (Все метки)

Здравствуйте.
Помогите ламеру. Пробовал программировать, учась в институте, а это было довольно давно. Сейчас есть такая задача....
Имеем текстовый файл, части строк в котором имеют полезную информацию, некоторым образом закодированную от прочтения...
Как привести в читаемый вид, я разгадал. Полезная информация начинается со знака "‰" и заканчивается 13 символом по ASCII. Кодированны просто - по 6 символов, каждый из которого имеет разное смещение по коду ASCII... Не знаю как правильно обьяснить.
Сделал скрипт на VB, работает , но невыносимо долго. Файл довольно большой. Вот уже который час обрабатывается.
Я понимаю, что неправильно иметь доступ к символу активного файла через
ActiveDocument.Characters(i), но как сделать по другому не знаю...
Итак пример файла:

Код
76•6••••1•0•4•1•0
‰FRWa_RfЃcgVTmJ]aQZeDOaQi–Q_YMYgJnfQiўЃ^dQ‰aPabYXcЃQeN‰hD]\?ZWSdbMe–P\b?LeI[YbJ\TЋ[I‰hYTf?LrRbkSR–Pa“YOWMW[I`_JЋcYX[UYjQR–JZ\?]hMbWQ‰ЈЃу“–‰
1••••1
‰hB[bWTjQOYUXhTk
1••••1
‰hB[b]RdB\eQZeDOaQO
1••••1
‰hB[bWK\S^Y`OdJT
1••••1
‰gG\fIK\MkaW[i^
77•6••••5•0•1•1•0
‰KJ\TV[_R]VIW_GЋdIQYJa\h‰fRTXXZ_aa\h‰ћJ\VN[iJe\WWdPX“MOvTT_eWeSa\‘•–BЋfIT]GЋcYX_IQbM[iDTaVX`ЃSYh\\MkaW[iJЋ[I‰hYTf?[eC`fKOdOji?^_OOaZXY]d“YOhU_eWLўЃ^bT]nBT`d_–Pa“YOWMW[I`_JЋcYX_IQbMRcPX“XZeFb^_R_ЃW_Q‰jSZgL‰ЈЃу“–‰
1••••1
Вотсобственно то, что я написал...

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
Sub recode()
 
Dim i As Long, j As Integer
For i = 2 To ActiveDocument.Characters.Count
   If ActiveDocument.Characters(i) = "‰" Then
         j = 1
         i = i + 1
         Do While Asc(ActiveDocument.Characters(i)) <> 13
         
                     If j = 1 Then If (Asc(ActiveDocument.Characters(i)) + 137) <= 255 Then ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 137) Else ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 137 - 255)
                     If j = 2 Then If (Asc(ActiveDocument.Characters(i)) + 158) <= 255 Then ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 158) Else ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 158 - 255)
                     If j = 3 Then If (Asc(ActiveDocument.Characters(i)) + 145) <= 255 Then ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 145) Else ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 145 - 255)
                     If j = 4 Then If (Asc(ActiveDocument.Characters(i)) + 140) <= 255 Then ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 140) Else ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 140 - 255)
                     If j = 5 Then If (Asc(ActiveDocument.Characters(i)) + 151) <= 255 Then ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 151) Else ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 151 - 255)
                     If j = 6 Then If (Asc(ActiveDocument.Characters(i)) + 150) <= 255 Then ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 150) Else ActiveDocument.Characters(i) = Chr(Asc(ActiveDocument.Characters(i)) + 150 - 255)
 
              j = j + 1
              i = i + 1
              If j = 7 Then j = 1
         Loop
10 Next i
MsgBox i
End Sub
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.10.2010, 16:50
Ответы с готовыми решениями:

Как выгрузить значение ячейки в текстовый файл
Здравствуйте. Есть ячейка со сложной формулой с таким результатом. - 0...

Как перевести текстовый файл в excel формат
Люди помогите! 1. У меня имеется текстовый файл с разделителями: Пример ...

Как открыть текстовый файл с пом функции CreateObject
Есть файл. Путь C:\Sample\Sample.txt. Хотелось бы открыть его с пом функции...

Как скопировать все данные из ComboBox в текстовый файл?
Помогите, пожалуйста. Вопрос, следующий как скопировать все данные из ComboBox...

Как загрузить текстовый файл с определенной строки и разделить его на столбцы
Добрый вечер, подскажите пожалуйста, как написать макрос загрузки текстового...

2
nilem
0 / 0 / 0
Регистрация: 21.05.2017
01.11.2010, 11:07 2
Попробовал сделать на VBA. Так не быстрее будет?
0
Вложения
Тип файла: zip Книга2 шифр.zip (17.6 Кб, 32 просмотров)
Paul_T
0 / 0 / 0
Регистрация: 11.03.2016
01.11.2010, 11:53 3
Цитата Сообщение от nilem Посмотреть сообщение
Попробовал сделать на VBA. Так не быстрее будет?
Интересное решение. Спасибо.
Вообщем то задача уже не актуальна. Просто было интересно разобраться...
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.11.2010, 11:53

Как правильно открыть xls файл?
Теоретический вопрос следующего характера. Из текущей рабочей книги нужно...

Побайтно вывести рисунок в видеопамять, начиная с левого верхнего угла дисплея
Возможно ли, посредством VBA, сделать следующее: Имеется не сжатый рисунок RGB...

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


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

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

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