Страница: 1 | 2 |
Вопрос: Как быстро заменить символы в двоичном файле ?
Добавлено: 02.05.07 13:31
Автор вопроса: Meh&vb | ICQ: 195578509
Делаю русификатор одной программы, нужно заменить символы в формате Unicode на другие. Если есть готовый алгоритм быстрой замены символов в двоичном файле, помогите, буду весьма благодарен.
Ответы
Всего ответов: 27
Номер ответа: 1
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #1
Добавлено: 02.05.07 14:57
Быстро неполучится, Вам прийдется читать по символу
Open FileName For Input As #1
Text = Input(LOF(1), #1)
Close #1
Open FileName For Output As #1
For i = 1 To Len(Text)
S = Mid(Text, i, 1)
'**********Zamina "i" na "G"***********
If S = "i" Then S = "G"
Txt = Txt & S
Next i
Print #1, Txt
Close #1
Номер ответа: 2
Автор ответа:
GSerg
Вопросов: 0
Ответов: 1876
Профиль | | #2
Добавлено: 02.05.07 15:50
Нет, это Вам придётся прочитать книжку "VB для чайников" и узнать про функцию Replace...
Номер ответа: 3
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #3
Добавлено: 02.05.07 16:13
Новая функция,которая появилась в Visual Basic 6.0, а у меня справочник VB 5.0
А Replace-ом будет так:
Open FileName For Input As #1
FText = Input(LOF(1), #1)
Close #1
Open FileName For Output As #1
'*********************************************
S = "5"
N = "*"
Txt = Replace(FText, S, N, 1, Len(FText))
'**********************************************
Open FileName For Output As #1
Print #1, Txt
Close #1
Номер ответа: 4
Автор ответа:
Visual Basic .NET 2005 Пиратская версия
Вопросов: 38
Ответов: 190
Web-сайт:
Профиль | | #4
Добавлено: 02.05.07 17:23
TRANSLIT:
Basic-starie <<realnie programmeri usayut assembler ili net>>
RUS:
Бейсик-старье <<реальные программеры юзают асм или нет>>
EN:
VB-(придется сказать по русски - отстой) <<real programmers use assembler or dotnet>>
Номер ответа: 5
Автор ответа:
Docal
ICQ: 408802757
Вопросов: 14
Ответов: 126
Web-сайт:
Профиль | | #5
Добавлено: 02.05.07 17:56
ИЗ VB все начинают,просто он легкий и я не думаю што он со старица.
Номер ответа: 6
Автор ответа:
intel-DX
ICQ: 445091742
Вопросов: 4
Ответов: 169
Профиль | | #6
Добавлено: 02.05.07 18:08
А за assembler по подробней можеш( Компилятор, хелпы
где можно скачать).
Номер ответа: 7
Автор ответа:
HACKER
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
Профиль | | #7
Добавлено: 02.05.07 18:17
Самое быстрое загрузить файл Get'ом в байтовый массив, и работать с массивом. Replace в этом случае не рулит, нужно чётко самому знать расположение байтов которые нужно заменить.
Если всё же работать с файлом как с текстовым, что значительно медление, можно попробовать разогнать стандартную вб6 функцию Replace...
ByVal Find As String, _
ByVal Replace As String, _
Optional ByVal Compare As VbCompareMethod = vbBinaryCompare) As String
'Быренькая ф-йия замена (в 3 раза быстрее стандартной)
'http://vbstreets.ru/VB/Articles/65769.aspx
If Len(Expression) = 0 Then Exit Function
If Len(Replace) = 0 Then
MyReplace = Expression
Exit Function
End If
Dim l As Long, lenR As Long, p1 As Long, p2 As Long, p21 As Long, s As String, Replace3_1 As String
l = Len(Find)
If (l = 0) Then
Replace3_1 = Expression
Exit Function
End If
lenR = Len(Replace)
If (lenR = l) Then
p1 = 1
p2 = InStr(p1, Expression, Find, Compare)
Do While (p2)
Mid$(Expression, p1) = Mid$(Expression, p1, p2 - p1)
Mid$(Expression, p2) = Replace
p1 = p2 + l
p2 = InStr(p1, Expression, Find, Compare)
Loop
MyReplace = Expression
Exit Function
ElseIf (lenR > l) Then
s = Space$(Len(Expression) + (Len(Expression) \ l) * (lenR - l))
Else
s = Space$(Len(Expression))
End If
p21 = 1
p1 = 1
p2 = InStr(p1, Expression, Find, Compare)
Do While (p2)
Mid$(s, p21) = Mid$(Expression, p1, p2 - p1)
p21 = p21 + p2 - p1
Mid$(s, p21) = Replace
p21 = p21 + lenR
p1 = p2 + l
p2 = InStr(p1, Expression, Find, Compare)
Loop
Mid$(s, p21) = Mid$(Expression, p1)
p21 = p21 + Len(Mid$(Expression, p1))
s = Left$(s, p21 - 1)
MyReplace = s
End Function
Номер ответа: 8
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #8
Добавлено: 02.05.07 18:18
VB6 состарился еще 5 лет назад
Номер ответа: 9
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #9
Добавлено: 02.05.07 19:18
Неправильный перевод на английский.
VB - shit <<real programmers use assembler or don't>>
Номер ответа: 10
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #10
Добавлено: 02.05.07 20:06
Реальные программеры юзают .NET
Номер ответа: 11
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #11
Добавлено: 02.05.07 20:37
VB .NET для крутых парней
И C# ему под стать!
Номер ответа: 12
Автор ответа:
Серёга
ICQ: 262809473
Вопросов: 17
Ответов: 561
Web-сайт:
Профиль | | #12
Добавлено: 02.05.07 21:26
Basic-starie <<realnie programmeri usayut assembler ili net>>
RUS:
Бейсик-старье <<реальные программеры юзают асм или нет>>
EN:
VB-(придется сказать по русски - отстой) <<real programmers use assembler or dotnet>>
И C# ему под стать!
Долой СПАМ!!!
))
Номер ответа: 13
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #13
Добавлено: 02.05.07 21:48
WTF???
Номер ответа: 14
Автор ответа:
Alexandrus
ICQ: 496782368
Вопросов: 18
Ответов: 312
Web-сайт:
Профиль | | #14
Добавлено: 02.05.07 22:01
Поддерживаю! Скорее прикрутить на форум плагин от спамеров!)
Номер ответа: 15
Автор ответа:
Artyom
Разработчик
Вопросов: 130
Ответов: 6602
Профиль | | #15
Добавлено: 03.05.07 00:03
ну все сейчас я кого-то бить буду!