powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прога для форматирования кода для этого форума. Сваяем?
25 сообщений из 26, страница 1 из 2
Прога для форматирования кода для этого форума. Сваяем?
    #32485963
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предлагаю всем навалиться и сделать прогу на vb для форматирования примеров, размещаемых в этом форуме. Теги SRC явно не расчитаны на vb.

Например:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Function Test(a As Long) As Long
'пример функции
If a >  0  Then
Test =  1 
Else
Test =  0 
End If
End Function


Создаваемая утилита при нажатии кнопки берёт из буфера обмена код, добавляет теги и помещает обратно в буфер отформатированный код. Например такой:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
[SIZE= 2 ][color=blue]Public Function[/color] Test(a [color=blue]As Long[/color]) [color=blue]As Long[/color]
[color=green]'пример функции[/color]
[color=blue]If[/color] a >  0  [color=blue]Then[/color]
Test =  1 
[color=blue]Else[/color]
Test =  0 
[color=blue]End If[/color]
[color=blue]End Function[/color][/SIZE]


А так он выглядит в тексте форума:

Public Function Test(a As Long) As Long
'пример функции
If a > 0 Then
Test = 1
Else
Test = 0
End If
End Function

Какие будут предложения?
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32486264
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот для начала такой пример:
Для использования - создать новый проект и на форму добавить кнопку Command1.
Для проверки работоспособности - скопировать любой код и набрать Command1.
В буфере обмена будет размеченный код, готовый для вставки в ваше сообщение на форуме.

Предлагаю поучаствовать в дальнейшем развитии этого проекта.


Private Sub Command1_Click()
Dim aStr() As Variant 'массив искомых слов
Dim mStrIn As String 'входящая строка
Dim mStrOut As String 'выходящая строка
Dim mStrSub As String 'выделенная подстрока
Dim mChr As String 'выделенный символ
Dim mNum As Long 'текущая позиция
Dim mNumOld As Long 'предыдущая позиция
Dim bOk As Boolean 'признак обнаружения подстроки

'массив ключевых слов
aStr() = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _
"WithEvents", "With", "Width", "While", "Wend", "Variant", _
"Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _
"Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _
"String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _
"Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _
"RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _
"Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _
"Private", "Print", "Preserve", "ParamArray", "Output", "Or", _
"Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _
"Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _
"Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _
"Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _
"Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _
"InputB$", "InputB", "Input$", "Input", "In", "Implements", _
"Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _
"Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _
"F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _
"Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _
"Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _
"DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _
"DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _
"Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _
"CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _
"CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")
'"CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", "Binary", _
'"BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", "And", "Alias", _
'"AddressOf", "Access", "Abs"

mStrIn = Clipboard.GetText 'получили строку из буфера
mNumOld = 0
mStrOut = ""
For mNum = 1 To Len(mStrIn) 'перечисляем все символы
mChr = Mid(mStrIn, mNum, 1) 'выделяем символ
If mChr = " " Or mChr = vbCr Then
'обнаружен разделитель слов
mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
bOk = False
For i = 0 To UBound(aStr) 'поиск подстроки
If mStrSub = aStr(i) Then
bOk = True
Exit For
End If
Next
If bOk = True Then 'подстрока найдена
mStrOut = mStrOut & "" & mStrSub & " "
Else
mStrOut = mStrOut & mStrSub & " "
End If
mNumOld = mNum
End If
Next
mStrOut = mStrOut & ""
Clipboard.SetText mStrOut 'вернули строку в буфер
End
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32486648
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все молчат как партизаны, а в предыдущем варианте была ошибка.

Private Sub Command1_Click()
Dim aStr() As Variant 'массив искомых слов
Dim mStrIn As String 'входящая строка
Dim mStrOut As String 'выходящая строка
Dim mStrSub As String 'выделенная подстрока
Dim mChr As String 'выделенный символ
Dim mNum As Long 'текущая позиция
Dim mNumOld As Long 'предыдущая позиция
Dim bOk As Boolean 'признак обнаружения подстроки
Dim arr1 As Variant
Dim arr2 As Variant
'массив ключевых слов
arr1 = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _
"WithEvents", "With", "Width", "While", "Wend", "Variant", _
"Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _
"Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _
"String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _
"Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _
"RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _
"Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _
"Private", "Print", "Preserve", "ParamArray", "Output", "Or", _
"Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _
"Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _
"Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _
"Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _
"Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _
"InputB$", "InputB", "Input$", "Input", "In", "Implements", _
"Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _
"Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _
"F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _
"Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _
"Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _
"DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _
"DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _
"Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _
"CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _
"CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")
'ограничение на размер массива, определяемого таким способом
arr2 = Array("CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", _
"Binary", "BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", _
"And", "Alias", "AddressOf", "Access", "Abs")

aStr() = arr1
ReDim Preserve aStr(0 To UBound(arr1) + UBound(arr2) + 1)

For i = 0 To UBound(arr2)
aStr(UBound(arr1) + i + 1) = arr2(i)
Next

mStrIn = Clipboard.GetText 'получили строку из буфера
mNumOld = 0
mStrOut = "[" & "SIZE=2" & "]"

For mNum = 1 To Len(mStrIn) 'перечисляем все символы
mChr = Mid(mStrIn, mNum, 1) 'выделяем символ

If mChr = " " Or mChr = vbCr Or mChr = vbLf Or mChr = "(" Or mChr = ")" Or mNum = Len(mStrIn) Then

'обнаружен разделитель слов
mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
bOk = False

For i = 0 To UBound(aStr) 'поиск подстроки

If mStrSub = aStr(i) Then
bOk = True
Exit For
End If

Next

If bOk = True Then 'подстрока найдена
mStrOut = mStrOut & "[" & "color=blue" & "]" & mStrSub & "[" & "/color" & "]" & mChr
Else
mStrOut = mStrOut & mStrSub & mChr
End If

mNumOld = mNum
End If

If mChr = Chr(39) Then
mNum = InStr(mNum, mStrIn, vbCrLf)

If mNum = 0 Then mNum = Len(mStrIn)
mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
mStrOut = mStrOut & "[" & "color=green" & "]" & mStrSub & "[" & "/color" & "]"
mNumOld = mNum
End If

Next

mStrOut = mStrOut & "[" & "/SIZE" & "]"
Clipboard.SetText mStrOut 'вернули строку в буфер
MsgBox "Код скопирован в буфер"
End Sub
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32487397
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
все почитали этот топик, и теперь усиленно читают доки по NET :-)
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32487559
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Hibernate
Лучше б подсказали, как табуляцию в коде сохранить.
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32487802
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я думаю, что табуляция, равно как группа пробелов будет скушана или парсером сайта, или самим браузером при отображении. К сожалению.
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32488398
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит tab нужно заменить 4мя nbsp
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32489636
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Antonariy
Спасибо большое. Выглядит гораздо лучше.
Private Sub Command1_Click()
    Dim aStr() As Variant 'массив искомых слов
    Dim mStrIn As String 'входящая строка
    Dim mStrOut As String 'выходящая строка
    Dim mStrSub As String 'выделенная подстрока
    Dim mChr As String 'выделенный символ
    Dim mNum As Long 'текущая позиция
    Dim mNumOld As Long 'предыдущая позиция
    Dim bOk As Boolean 'признак обнаружения подстроки
    Dim arr1 As Variant
    Dim arr2 As Variant
    'массив ключевых слов
    arr1 = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _
       "WithEvents", "With", "Width", "While", "Wend", "Variant", _
       "Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _
       "Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _
       "String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _
       "Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _
       "RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _
       "Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _
       "Private", "Print", "Preserve", "ParamArray", "Output", "Or", _
       "Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _
       "Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _
       "Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _
       "Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _
       "Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _
       "InputB$", "InputB", "Input$", "Input", "In", "Implements", _
       "Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _
       "Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _
       "F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _
       "Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _
       "Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _
       "DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _
       "DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _
       "Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _
       "CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _
       "CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")
    'ограничение на размер массива, определяемого таким способом
    arr2 = Array("CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", "Binary", "BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", "And", "Alias", "AddressOf", "Access", "Abs")

    aStr() = arr1
    ReDim Preserve aStr(0 To UBound(arr1) + UBound(arr2) + 1)

    For i = 0 To UBound(arr2)
        aStr(UBound(arr1) + i + 1) = arr2(i)
    Next

    mStrIn = Clipboard.GetText 'получили строку из буфера
    mNumOld = 0
    mStrOut = "[" & "SIZE=2" & "]"

    For mNum = 1 To Len(mStrIn) 'перечисляем все символы
        mChr = Mid(mStrIn, mNum, 1) 'выделяем символ

        If mChr = " " Or mChr = vbCr Or mChr = vbLf Or mChr = "(" Or mChr = ")" Or mNum = Len(mStrIn) Then
            If mChr = " " Then mChr = "&nb" & "sp;"
            'обнаружен разделитель слов
            mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
            bOk = False

            For i = 0 To UBound(aStr) 'поиск подстроки

                If mStrSub = aStr(i) Then
                    bOk = True
                    Exit For
                End If

            Next

            If bOk = True Then 'подстрока найдена
                mStrOut = mStrOut & "[" & "color=blue" & "]" & mStrSub & "[" & "/color" & "]" & mChr
            Else
                mStrOut = mStrOut & mStrSub & mChr
            End If

            mNumOld = mNum
        End If

        If mChr = Chr(39) Then
            mNum = InStr(mNum, mStrIn, vbCrLf)

            If mNum = 0 Then mNum = Len(mStrIn)
            mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
            mStrOut = mStrOut & "[" & "color=green" & "]" & mStrSub & "[" & "/color" & "]"
            mNumOld = mNum
        End If
        
    Next

    mStrOut = mStrOut & "[" & "/SIZE" & "]"
    Clipboard.SetText mStrOut 'вернули строку в буфер
    MsgBox "Код скопирован в буфер"
End Sub
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32489683
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И принудительно поставить шрифт Courier New
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32489722
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[FONT FACE="Arial"]Private Sub Command1_Click()
    Dim aStr() As Variant 'ìàññèâ èñêîìûõ ñëîâ
    Dim mStrIn As String 'âõîäÿùàÿ ñòðîêà
    Dim mStrOut As String 'âûõîäÿùàÿ ñòðîêà
    Dim mStrSub As String 'âûäåëåííàÿ ïîäñòðîêà
    Dim mChr As String 'âûäåëåííûé ñèìâîë
    Dim mNum As Long 'òåêóùàÿ ïîçèöèÿ
    Dim mNumOld As Long 'ïðåäûäóùàÿ ïîçèöèÿ
    Dim bOk As Boolean 'ïðèçíàê îáíàðóæåíèÿ ïîäñòðîêè
    Dim arr1 As Variant
    Dim arr2 As Variant
    'ìàññèâ êëþ÷åâûõ ñëîâ
    arr1 = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _
       "WithEvents", "With", "Width", "While", "Wend", "Variant", _
       "Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _
       "Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _
       "String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _
       "Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _
       "RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _
       "Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _
       "Private", "Print", "Preserve", "ParamArray", "Output", "Or", _
       "Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _
       "Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _
       "Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _
       "Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _
       "Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _
       "InputB$", "InputB", "Input$", "Input", "In", "Implements", _
       "Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _
       "Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _
       "F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _
       "Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _
       "Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _
       "DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _
       "DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _
       "Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _
       "CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _
       "CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")
    'îãðàíè÷åíèå íà ðàçìåð ìàññèâà, îïðåäåëÿåìîãî òàêèì ñïîñîáîì
    arr2 = Array("CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", "Binary", "BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", "And", "Alias", "AddressOf", "Access", "Abs")
    aStr() = arr1
    ReDim Preserve aStr(0 To UBound(arr1) + UBound(arr2) + 1)
    For i = 0 To UBound(arr2)
        aStr(UBound(arr1) + i + 1) = arr2(i)
    Next
    mStrIn = Clipboard.GetText 'ïîëó÷èëè ñòðîêó èç áóôåðà
    mNumOld = 0
    mStrOut = "[FONT FACE=""Arial""][" & "SIZE=2" & "]"
    For mNum = 1 To Len(mStrIn) 'ïåðå÷èñëÿåì âñå ñèìâîëû
        mChr = Mid(mStrIn, mNum, 1) 'âûäåëÿåì ñèìâîë
        If mChr = " " Or mChr = vbCr Or mChr = vbLf Or mChr = "(" Or mChr = ")" Or mNum = Len(mStrIn) Then
            If mChr = " " Then mChr = "&nb" & "sp;"
            'îáíàðóæåí ðàçäåëèòåëü ñëîâ
            mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'âûäåëÿåì ïîäñòðîêó
            bOk = False
            For i = 0 To UBound(aStr) 'ïîèñê ïîäñòðîêè
                If mStrSub = aStr(i) Then
                    bOk = True
                    Exit For
                End If
            Next
            If bOk = True Then 'ïîäñòðîêà íàéäåíà
                mStrOut = mStrOut & "[" & "color=blue" & "]" & mStrSub & "[" & "/color" & "]" & mChr
            Else
                mStrOut = mStrOut & mStrSub & mChr
            End If
            mNumOld = mNum
        End If
        If mChr = Chr(39) Then
            mNum = InStr(mNum, mStrIn, vbCrLf)
            If mNum = 0 Then mNum = Len(mStrIn)
            mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'âûäåëÿåì ïîäñòðîêó
            mStrOut = mStrOut & "[" & "color=green" & "]" & mStrSub & "[" & "/color" & "]"
            mNumOld = mNum
        End If
    Next
    mStrOut = mStrOut & "[" & "/SIZE" & "][/FONT]"
    Debug.Print mStrOut
    Clipboard.SetText mStrOut 'âåðíóëè ñòðîêó â áóôåð
    MsgBox "Êîä ñêîïèðîâàí â áóôåð"
End Sub

[/FONT]
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32489725
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Н-да. Со шрифтами как всегда проблема.
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32489922
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Antonariy
И за эту идею спасибо.
Private Sub Command1_Click()
    Dim aStr() As Variant 'массив искомых слов
    Dim mStrIn As String 'входящая строка
    Dim mStrOut As String 'выходящая строка
    Dim mStrSub As String 'выделенная подстрока
    Dim mChr As String 'выделенный символ
    Dim mNum As Long 'текущая позиция
    Dim mNumOld As Long 'предыдущая позиция
    Dim bOk As Boolean 'признак обнаружения подстроки
    Dim arr1 As Variant
    Dim arr2 As Variant
    'массив ключевых слов
    arr1 = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _
       "WithEvents", "With", "Width", "While", "Wend", "Variant", _
       "Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _
       "Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _
       "String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _
       "Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _
       "RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _
       "Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _
       "Private", "Print", "Preserve", "ParamArray", "Output", "Or", _
       "Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _
       "Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _
       "Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _
       "Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _
       "Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _
       "InputB$", "InputB", "Input$", "Input", "In", "Implements", _
       "Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _
       "Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _
       "F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _
       "Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _
       "Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _
       "DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _
       "DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _
       "Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _
       "CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _
       "CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")
    'ограничение на размер массива, определяемого таким способом
    arr2 = Array("CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", _
    "Binary", "BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", "And", _
    "Alias", "AddressOf", "Access", "Abs")

    aStr() = arr1
    ReDim Preserve aStr(0 To UBound(arr1) + UBound(arr2) + 1)

    For i = 0 To UBound(arr2)
        aStr(UBound(arr1) + i + 1) = arr2(i)
    Next

    mStrIn = Clipboard.GetText 'получили строку из буфера
    mNumOld = 0
    mStrOut = "[" & "FIXED" & "]"
    mStrOut = mStrOut & "[" & "SIZE=2" & "]"

    For mNum = 1 To Len(mStrIn) 'перечисляем все символы
        mChr = Mid(mStrIn, mNum, 1) 'выделяем символ

        If mChr = " " Or mChr = vbCr Or mChr = vbLf Or mChr = "(" Or mChr = ")" Or mNum = Len(mStrIn) Then
            If mChr = " " Then mChr = "&nb" & "sp;"
            'обнаружен разделитель слов
            mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
            bOk = False

            For i = 0 To UBound(aStr) 'поиск подстроки

                If mStrSub = aStr(i) Then
                    bOk = True
                    Exit For
                End If

            Next

            If bOk = True Then 'подстрока найдена
                mStrOut = mStrOut & "[" & "color=blue" & "]" & mStrSub & "[" & "/color" & "]" & mChr
            Else
                mStrOut = mStrOut & mStrSub & mChr
            End If

            mNumOld = mNum
        End If

        If mChr = Chr(39) Then
            mNum = InStr(mNum, mStrIn, vbCrLf)

            If mNum = 0 Then mNum = Len(mStrIn)
            mStrSub = Mid(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
            mStrOut = mStrOut & "[" & "color=green" & "]" & mStrSub & "[" & "/color" & "]"
            mNumOld = mNum
        End If
        
    Next

    mStrOut = mStrOut & "[" & "/SIZE" & "]"
    mStrOut = mStrOut & "[" & "/FIXED" & "]"
    Clipboard.SetText mStrOut 'вернули строку в буфер
    MsgBox "Код скопирован в буфер"
End Sub
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32490060
Hibernate
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2marvan:
класс!!! снимаю шляпу.
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32533989
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 marvan
Еще бы vbCrLf на <br> поменять... А то пустые строки игнорирует, подряд пишет.
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32534350
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Antonariy
Хоть я и не смог понять в каких случаях пустые строки игнорирует, подряд пишет. Я сделал vbCrLf на <br> поменять, но в
тексте сообщения <br> или [br] не воспринимаются.

Исправил ошибку с форматированием последнего слова
Чуть оптимизировал код

Код: plaintext
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.
'Процедура форматирования кода
'Для использования - создать новый проект и на форму добавить кнопку Command1
'Для проверки работоспособности - скопировать любой код и нажать Command1
'В буфере обмена будет размеченный код, готовый для вставки в ваше сообщение на форуме
'Предлагаю поучаствовать в дальнейшем развитии этого проекта
Option Explicit
Private Sub Command1_Click()
    Dim aStr(0 To 199) As String 'массив искомых слов
    Dim mStrIn As String 'входящая строка
    Dim mStrInLen As Long 'длина входящей строки
    Dim mStrOut As String 'выходящая строка
    Dim mStrSub As String 'выделенная подстрока
    Dim mChr As String 'выделенный символ
    Dim mNum As Long 'текущая позиция
    Dim mNumOld As Long 'предыдущая позиция
    Dim bOk As Boolean 'признак обнаружения подстроки
    Dim i As Byte 'счётчик
    Dim arr1 As Variant
    Dim arr2 As Variant
    'массив ключевых слов
    arr1 = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _
       "WithEvents", "With", "Width", "While", "Wend", "Variant", _
       "Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _
       "Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _
       "String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _
       "Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _
       "RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _
       "Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _
       "Private", "Print", "Preserve", "ParamArray", "Output", "Or", _
       "Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _
       "Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _
       "Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _
       "Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _
       "Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _
       "InputB$", "InputB", "Input$", "Input", "In", "Implements", _
       "Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _
       "Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _
       "F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _
       "Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _
       "Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _
       "DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _
       "DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _
       "Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _
       "CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _
       "CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")
    'ограничение на размер массива, определяемого таким способом
    arr2 = Array("CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", _
       "Binary", "BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", _
       "And", "Alias", "AddressOf", "Access", "Abs")

    For i = 0 To 178
        aStr(i) = arr1(i)
    Next
    For i = 0 To 20
        aStr(179 + i) = arr2(i)
    Next

    mStrIn = Clipboard.GetText & vbCr 'получили строку из буфера
    mNumOld = 0
    mStrOut = "[" & "FIXED" & "]"
    mStrOut = mStrOut & "[" & "SIZE=2" & "]"
    
    mStrInLen = Len(mStrIn)
    For mNum = 1 To mStrInLen 'перечисляем все символы входящей строки
        mChr = Mid$(mStrIn, mNum, 1) 'выделяем символ

        If mChr = " " Or mChr = vbCr Or mChr = vbLf Or mChr = "(" Or mChr = ")" _
           Or mChr = "," Or mNum = Len(mStrIn) Then
            If mChr = " " Then mChr = "&nb" & "sp;"
            'обнаружен разделитель слов
            mStrSub = Mid$(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
            bOk = False

            For i = 0 To 199 'поиск подстроки
                If mStrSub = aStr(i) Then
                    bOk = True
                    Exit For
                End If
            Next

            If bOk = True Then 'подстрока найдена
                mStrOut = mStrOut & "[" & "color=blue" & "]" & mStrSub & _
                                    "[" & "/color" & "]" & mChr
            Else
                mStrOut = mStrOut & mStrSub & mChr
            End If

            mNumOld = mNum
        End If

        If mChr = Chr$(39) Then 'обнаружен коментарий
            mNum = InStr(mNum, mStrIn, vbCrLf)
            If mNum = 0 Then mNum = Len(mStrIn)
            mStrSub = Mid$(mStrIn, mNumOld + 1, mNum - mNumOld - 1) 'выделяем подстроку
            mStrOut = mStrOut & "[" & "color=green" & "]" & mStrSub & _
                                "[" & "/color" & "]"
            mNumOld = mNum
        End If
    Next

    mStrOut = mStrOut & "[" & "/SIZE" & "]"
    mStrOut = mStrOut & "[" & "/FIXED" & "]"
    Clipboard.SetText mStrOut 'вернули строку в буфер
    MsgBox "Код скопирован в буфер"
End Sub

...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32534437
Фотография Antonariy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хоть я и не смог понять в каких случаях пустые строки игнорирует, подряд пишет.

Хотя бы здесь:
/topic/93660
Процедуры подряд пишет, без пустой строки между End Sub и Private sub
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32535270
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё понял. Дело в том, что я пользуюсь Mozilla Firefox, и от туда копирование идёт как надо. В самом html между End Sub и Private sub стоят два <BR><BR>. Это IE шалит при копировании.
Однако проблема решена. Теперь сгенерированный код выглядит и копируется одинаково и в Mozilla Firefox и в Internet Explorer. Кроме того, теперь его можно запустить не только в VB, но и в VBA. Работоспособность тестировалась под WinXP на VB6 SP5, Excel и Access 2003.

Код: plaintext
1.
    \\\'Для использования - создать новый проект VB или VBA    \\\'                  - поместить в код формы ниже лежащий текст программы    \\\'                  - скопировать любой код и запустить программу (открыть форму)    \\\'В буфере обмена будет размеченный код, готовый для вставки в ваше сообщение на форуме    \\\'Предлагаю поучаствовать в дальнейшем развитии этого проекта    Option Explicit        Private Declare Function OpenClipboard _                    Lib "user32" (ByVal hWnd As Long) As Long    Private Declare Function CloseClipboard _                    Lib "user32" () As Long    Private Declare Function GetClipboardData _                    Lib "user32" (ByVal wFormat As Long) As Long    Private Declare Function GlobalAlloc _                    Lib "kernel32" (ByVal wFlags&, _                                    ByVal dwBytes As Long) As Long    Private Declare Function GlobalLock _                    Lib "kernel32" (ByVal hMem As Long) As Long    Private Declare Function GlobalUnlock _                    Lib "kernel32" (ByVal hMem As Long) As Long    Private Declare Function lstrlen _                    Lib "kernel32" _                    Alias "lstrlenA" (ByVal lpString As Long) As Long    Private Declare Sub CopyMemory _                    Lib "kernel32" _                    Alias "RtlMoveMemory" (pDst As Any, _                                           pSrc As Long, _                                           ByVal ByteLen As Long)        Private Declare Function lstrcpy _                    Lib "kernel32" (ByVal lpString1 As Any, _                                    ByVal lpString2 As Any) As Long    Private Declare Function EmptyClipboard _                    Lib "user32" () As Long    Private Declare Function SetClipboardData _                    Lib "user32" (ByVal wFormat As Long, _                                  ByVal hMem As Long) As Long        Private Declare Function GetKeyboardLayoutName _                    Lib "user32" _                    Alias "GetKeyboardLayoutNameA" (ByVal pwszKLID As String) As Long    Private Declare Function LoadKeyboardLayout _                    Lib "user32" _                    Alias "LoadKeyboardLayoutA" (ByVal HKL As String, _                                                 ByVal Flags As Long) As Long    Private Const KL_NAMELENGTH = 9    Private Const GHND = &H42    Private Const CF_TEXT = 1Public Sub Form_Load()    \\\'Процедура форматирования кода        Dim aStr(0 To 199) As String \\\'массив искомых слов    Dim mStrIn As String \\\'входящая строка    Dim mStrInLen As Long \\\'длина входящей строки    Dim mStrOut As String \\\'выходящая строка    Dim mStrSub As String \\\'выделенная подстрока    Dim mChr As String \\\'выделенный символ    Dim mNum As Long \\\'текущая позиция    Dim mNumOld As Long \\\'предыдущая позиция    Dim bOk As Boolean \\\'признак обнаружения подстроки    Dim i As Byte \\\'счётчик    Dim arr1 As Variant    Dim arr2 As Variant                    \\\'массив ключевых слов    arr1 = Array("#If", "#End", "#ElseIf", "#Else", "#Const", "Xor", "Write", _       "WithEvents", "With", "Width", "While", "Wend", "Variant", _       "Until", "Unknown", "Unlock", "Unload", "UBound", "TypeOf", _       "Type", "True", "To", "Then", "Text", "Tab", "Sub", "String$", _       "String", "StrComp", "Stop", "Step", "Static", "Spc", "Single", _       "Shared", "Sgn", "Set", "Select", "Seek", "Scale", "RSet", _       "RGB", "Return", "Resume", "Rem", "ReDim", "Read", "Randomize", _       "Random", "RaiseEvent", "Put", "Public", "PSet", "Property", _       "Private", "Print", "Preserve", "ParamArray", "Output", "Or", _       "Optional", "Option", "Open", "On", "Object", "Null", "Nothing", _       "Not", "Next", "New", "Name", "Module", "Mod", "MidB$", "MidB", _       "Mid$", "Mid", "Me", "LSet", "Loop", "Long", "Lock", "Local", _       "Load", "LINEINPUT", "Line", "Like", "Lib", "Let", "LenB", "Len", _       "Left", "LBound", "Is", "Integer", "Int", "InStrB", "InStr", _       "InputB$", "InputB", "Input$", "Input", "In", "Implements", _       "Imp", "If", "GoTo", "GoSub", "Go", "Global", "Get", "Function", _       "Friend", "FreeFile", "Format$", "Format", "For", "Fix", "False", _       "F", "Explicit", "Exit", "Event", "Error$", "Error", "Erase", _       "Eqv", "Enum", "EndIf", "End", "Empty", "ElseIf", "Else", "Each", _       "Double", "DoEvents", "Do", "Dir$", "Dir", "Dim", "DefVar", "DefStr", _       "DefSng", "DefObj", "DefLng", "DefInt", "DefDbl", "DefDec", "DefDate", _       "DefCur", "DefByte", "DefBool", "Declare", "Decimal", "Debug", "Date$", _       "Date", "Database", "Currency", "CVErr", "CVDate", "CVar", "CurDir$", _       "CurDir", "CStr", "CSng", "Const", "Compare", "Close", "CLng", "Circle", _       "CInt", "ChDir", "CDecl", "CDbl", "CDec", "CDate", "CCur", "CByte")    \\\'ограничение на размер массива, определяемого таким способом    arr2 = Array("CBool", "Case", "Call", "ByVal", "Byte", "ByRef", "Boolean", _       "Binary", "BF", "Base", "B", "Assert", "As", "Array", "Append", "Any", _       "And", "Alias", "AddressOf", "Access", "Abs")    For i = 0 To 178        aStr(i) = arr1(i)    Next    For i = 0 To 20        aStr(179 + i) = arr2(i)    Next     mStrIn = ClipBoard_GetData & vbCr \\\'получили строку из буфера    mNumOld = 0    mStrOut = "[" & "FIXED" & "]"    mStrOut = mStrOut & "[" & "SIZE=2" & "]"    mStrInLen = Len(mStrIn)    For mNum = 1 To mStrInLen \\\'перечисляем все символы входящей строки        mChr = Mid$(mStrIn, mNum, 1) \\\'выделяем символ        If mChr = " " Or mChr = vbCr Or mChr = vbLf Or mChr = "(" Or mChr = ")" _           Or mChr = "," Or mNum = Len(mStrIn) Then            If mChr = " " Then mChr = "&nb" & "sp;"            \\\'обнаружен разделитель слов            mStrSub = Mid$(mStrIn, mNumOld + 1, mNum - mNumOld - 1) \\\'выделяем подстроку            bOk = False            For i = 0 To 199 \\\'поиск подстроки                If mStrSub = aStr(i) Then                    bOk = True                    Exit For                End If            Next                        If bOk = True Then \\\'подстрока найдена                mStrOut = mStrOut & "[" & "color=blue" & "]" & mStrSub & _                                    "[" & "/color" & "]" & mChr            Else                mStrOut = mStrOut & mStrSub & mChr            End If            mNumOld = mNum        End If        If mChr = Chr$(39) Then \\\'обнаружен коментарий            mNum = InStr(mNum, mStrIn, vbCrLf)            If mNum = 0 Then mNum = Len(mStrIn)            mStrSub = Mid$(mStrIn, mNumOld + 1, mNum - mNumOld - 1) \\\'выделяем подстроку            mStrOut = mStrOut & "[" & "color=green" & "]" & mStrSub & _                                "[" & "/color" & "]"            mNumOld = mNum - 1        End If        If mChr = vbLf And Right$(mStrOut, 2) = vbCrLf Then            mStrOut = Left$(mStrOut, Len(mStrOut) - 2)            mStrOut = mStrOut & "" & "13"        End If    Next    mStrOut = mStrOut & "" & "13"    mStrOut = mStrOut & "[" & "/SIZE" & "]"    mStrOut = mStrOut & "[" & "/FIXED" & "]"    \\\'ссылка на эту процедуру    mStrOut = mStrOut & "[" & "SIZE=1" & "]"    mStrOut = mStrOut & "[" & "url=http://"    mStrOut = mStrOut & "/topic/87621" & "]"    mStrOut = mStrOut & "Как отформатирован этот код?" & "[" & "/url" & "]"    mStrOut = mStrOut & "[" & "/SIZE" & "]"    ClipBoard_SetData (mStrOut) \\\'вернули строку в буфер    MsgBox "Код скопирован в буфер"End Sub\\\'vba не имеет класса Сlipboard\\\'ниже приведены функции найденные на\\\'http://am.rusimport.ru/MsAccess/topic.aspx?ID=229\\\'и модифицированные мнойPrivate Function ClipBoard_GetData() As String    Dim hClipMemory As Long    Dim lpClipMemory As Long    Dim MyString As String    Dim lLength As Long    Dim RetVal As Long        If OpenClipboard(0&) = 0 Then        MsgBox "Невозможно открыть буфер обмена, " & "Может быть он занят другим приложением"        Exit Function    End If    \\\' получить указатель на блок памяти, с текстом буфера обмена    hClipMemory = GetClipboardData(CF_TEXT)    If IsNull(hClipMemory) Then        MsgBox "Невозможно выделить память"        GoTo OutOfHere    End If             \\\' фиксируем блок памяти, чтобы получить указатель на строку    lpClipMemory = GlobalLock(hClipMemory)    lLength = lstrlen(lpClipMemory)    If Not IsNull(lpClipMemory) Then        MyString = Space$(lLength)        CopyMemory ByVal MyString, ByVal lpClipMemory, lLength        RetVal = GlobalUnlock(hClipMemory)    Else        MsgBox "невозможно фиксировать блок памяти"    End IfOutOfHere:    RetVal = CloseClipboard()    ClipBoard_GetData = MyStringEnd FunctionPrivate Sub ClipBoard_SetData(MyString As String)    Dim hGlobalMemory As Long    Dim lpGlobalMemory As Long    Dim lLength As Long    Dim hClipMemory As Long    Dim x As Long    \\\'Выделяем блок памяти    lLength = Len(MyString)    hGlobalMemory = GlobalAlloc(GHND, lLength + 1)    \\\'Фиксируем блок памяти, чтобы получить указатель    lpGlobalMemory = GlobalLock(hGlobalMemory)    \\\'Копируем строку в этот блок памяти    lpGlobalMemory = lstrcpy(lpGlobalMemory, MyString)    \\\'Снимаем фиксацию блока памяти    If GlobalUnlock(hGlobalMemory) <> 0 Then        MsgBox "Невозможно снять фиксацию блока память. Копирование прервано."        GoTo OutOfHere2    End If    \\\'Открываем буфер обмена для копирования    If OpenClipboard(0&) = 0 Then        MsgBox "Невозможно открыть буфер обмена. Копирование прервано."        Exit Sub    End If    \\\'Очистка буфера обмена    x = EmptyClipboard()    \\\'переключаемся на русскую раскладку чтобы не иметь    \\\'проблем с русским текстом в буфере    \\\'(некорректно понимается кодовая страница)    Dim sOldLang As String    sOldLang = switchLang("00000419")    \\\'Копируем данные в буфер обмена    hClipMemory = SetClipboardData(CF_TEXT, hGlobalMemory)OutOfHere2:    If CloseClipboard() = 0 Then        MsgBox "Невозможно закрыть буфер обмена."    End If    \\\'возвращаем раскладку на место    If Len(sOldLang) > 0 Then sOldLang = switchLang(sOldLang)End Sub        Private Function getCurrLang() As String    Dim layoutname As String * KL_NAMELENGTH    Dim z As Long    z = GetKeyboardLayoutName(layoutname)    If z = 0 Then        getCurrLang = ""    Else        getCurrLang = StrZ(layoutname)    End IfEnd Function\\\'Переключает на указанную sNewLang раскладку - возвращает старую раскладкуPrivate Function switchLang(sNewLang As String) As String    \\\'"00000419" - русская    \\\'"00000409" - латинская    switchLang = getCurrLang    If StrComp(switchLang, sNewLang) <> 0 Then        LoadKeyboardLayout sNewLang, 1    End IfEnd FunctionPrivate Function StrZ(par As String) As String    Dim nSize As Long, i As Long    nSize = Len(par)    i = InStr(1, par, Chr$(0)) - 1    If i > nSize Then i = nSize    If i < 0 Then i = nSize    StrZ = Mid$(par, 1, i)End Function
Как отформатирован этот код?
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32535993
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тема закрыта. юзайте тег {SRC VBA} 'только скобки квадратные {/SRC}
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32641289
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 raur
создать новый проект,
код формы - см двумя постами выше.
элементы управления не нужны
инструкция использования там же.
2 all
модераторы, так и не поправили {SRC VBA}, так что тема по пежнему актуальна
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #32641329
raur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to marvan
ты молодец
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Прога для форматирования кода для этого форума. Сваяем?
    #34599651
r.t.f.m.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно где-то увидеть код перевода исходников сразу в HTML?
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #34602310
marvan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #34606053
r.t.f.m.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо!
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #34607196
r.t.f.m.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
If mStrSub = aStr(i) Then 
рекомендую заменить на:
Код: plaintext
If  StrComp(mStrSub,aStr(i),vbTextCompare)= 0  Then
Тогда сравнение с ключевыми словами будет нечувствительно к регистру
...
Рейтинг: 0 / 0
Прога для форматирования кода для этого форума. Сваяем?
    #34607339
Melkiades
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
r.t.f.m.
Тогда сравнение с ключевыми словами будет нечувствительно к регистру
Это зависит от состояния опции Option Compare (по умолчанию Binary) - можно выставить Text и не париться.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Прога для форматирования кода для этого форума. Сваяем?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]