Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 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-сайт: ex3mos.ucoz.ru
 Профиль | | #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-сайт: Doc-source.pp.net.ua
 Профиль | | #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...

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
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #8 Добавлено: 02.05.07 18:18
ИЗ VB все начинают,просто он легкий и я не думаю што он со старица.

VB6 состарился еще 5 лет назад

Ответить

Номер ответа: 9
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #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-сайт: houselab.narod.ru
 Профиль | | #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
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #13 Добавлено: 02.05.07 21:48
WTF???

Ответить

Номер ответа: 14
Автор ответа:
 Alexandrus



ICQ: 496782368 

Вопросов: 18
Ответов: 312
 Web-сайт: starsorion.com
 Профиль | | #14
Добавлено: 02.05.07 22:01
Поддерживаю! Скорее прикрутить на форум плагин от спамеров!:))

Ответить

Номер ответа: 15
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #15 Добавлено: 03.05.07 00:03
ну все сейчас я кого-то бить буду!

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам