Вопрос: Как быстро заменить символы в двоичном файле ? | Добавлено: 02.05.07 13:31 |
Автор вопроса: ![]() |
Делаю русификатор одной программы, нужно заменить символы в формате Unicode на другие. Если есть готовый алгоритм быстрой замены символов в двоичном файле, помогите, буду весьма благодарен. |
Ответы | Всего ответов: 27 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() 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 Автор ответа: ![]() ![]() ![]() Вопросов: 0 Ответов: 1876 ![]() |
Профиль | Цитата | #2 | Добавлено: 02.05.07 15:50 |
Вам прийдется читать по символу
Нет, это Вам придётся прочитать книжку "VB для чайников" и узнать про функцию Replace... |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() 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 Автор ответа: ![]() ![]() ![]() Вопросов: 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 Автор ответа: ![]() ![]() ICQ: 408802757 Вопросов: 14 Ответов: 126 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 02.05.07 17:56 |
ИЗ VB все начинают,просто он легкий и я не думаю што он со старица. |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ICQ: 445091742 Вопросов: 4 Ответов: 169 |
Профиль | Цитата | #6 | Добавлено: 02.05.07 18:08 |
А за assembler по подробней можеш( Компилятор, хелпы
где можно скачать). |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Offline Client Вопросов: 236 Ответов: 8362 |
Профиль | Цитата | #7 | Добавлено: 02.05.07 18:17 |
Самое быстрое загрузить файл Get'ом в байтовый массив, и работать с массивом. Replace в этом случае не рулит, нужно чётко самому знать расположение байтов которые нужно заменить.
Если всё же работать с файлом как с текстовым, что значительно медление, можно попробовать разогнать стандартную вб6 функцию Replace... Public Function MyReplace(ByVal Expression As String, _
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 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #8 | Добавлено: 02.05.07 18:18 |
ИЗ VB все начинают,просто он легкий и я не думаю што он со старица.
VB6 состарился еще 5 лет назад |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Лидер форума ICQ: 216865379 Вопросов: 106 Ответов: 9979 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 02.05.07 19:18 |
Неправильный перевод на английский.
VB - shit <<real programmers use assembler or don't>> |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #10 | Добавлено: 02.05.07 20:06 |
Реальные программеры юзают .NET |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #11 | Добавлено: 02.05.07 20:37 |
VB .NET для крутых парней
И C# ему под стать! |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 262809473 Вопросов: 17 Ответов: 561 |
Web-сайт: Профиль | Цитата | #12 | Добавлено: 02.05.07 21:26 |
TRANSLIT:
Basic-starie <<realnie programmeri usayut assembler ili net>> RUS: Бейсик-старье <<реальные программеры юзают асм или нет>> EN: VB-(придется сказать по русски - отстой) <<real programmers use assembler or dotnet>> VB6 состарился еще 5 лет назад
Реальные программеры юзают .NET
VB .NET для крутых парней
И C# ему под стать! Долой СПАМ!!! ![]() |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #13 | Добавлено: 02.05.07 21:48 |
WTF??? |
Номер ответа: 14 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 496782368 Вопросов: 18 Ответов: 312 |
Web-сайт: Профиль | Цитата | #14 | Добавлено: 02.05.07 22:01 |
Поддерживаю! Скорее прикрутить на форум плагин от спамеров!![]() |
Номер ответа: 15 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() Разработчик Вопросов: 130 Ответов: 6602 |
Профиль | Цитата | #15 | Добавлено: 03.05.07 00:03 |
ну все сейчас я кого-то бить буду! |
|