Andrey Fedorov писал(а):Смотреть тебе надо функцию StrConv...
tyomitch писал(а):63 -- это код вопросительного знака. Т.е. символа, который подставляется при преобразовании из Юникода в ANSI вместо непереводимых символов.
Алексей.Ф. писал(а):Andrey Fedorov писал(а):Смотреть тебе надо функцию StrConv...
Давно уже смотрел. Но, ничего она не конвертирует.
Алексей.Ф. писал(а):Так как всё-таки, увидеть код юникодных символов?
alibek писал(а):Алексей.Ф. писал(а):Так как всё-таки, увидеть код юникодных символов?
Если ты не понял, переведу ответ tyomitch-а. В этот момент это УЖЕ не unicode-символы, а знак вопроса.
Andrey Fedorov писал(а):Дык по твоему, в таком случае нафига она - для красоты?
Изначально у тебя символы в чем? В текстовом файле али как?
Куда их выводить хочешь - в TextBox?
Dim mytext As String
mytext = RichTextBox1.Text
RichTextBox2.Text = StrConv(mytext, vbFromUnicode)
alibek писал(а):Алексей.Ф. писал(а):Так как всё-таки, увидеть код юникодных символов?
Если ты не понял, переведу ответ tyomitch-а. В этот момент это УЖЕ не unicode-символы, а знак вопроса.
Алексей.Ф. писал(а):Не понятно, как увидеть код юникодных символов (любых).
Dim m() As Byte, s As String
s = "Текстик"
m = s
Алексей.Ф. писал(а):Моожет я что не так делаю?
Public Sub Main()
Dim s As String, m() As Byte, i As Long
s = "Проверочка"
m = s
Debug.Print vbCrLf & "=========="
For i = 0 To UBound(m) Step 2
Debug.Print Mid$(s, i \ 2 + 1, 1), m(i + 1), m(i)
Next i
m = StrConv(s, vbFromUnicode)
Debug.Print vbCrLf & "----------"
For i = 0 To UBound(m)
Debug.Print Mid$(s, i + 1, 1), m(i), Asc(Mid$(s, i + 1, 1))
Next i
End Sub
Andrey Fedorov писал(а):
- Код: Выделить всё
Dim m() As Byte, s As String
s = "Текстик"
m = s
Сможешь посмотреть содержимое массива?
Andrey Fedorov писал(а):
См ниже что ты делаешь:
- Код: Выделить всё
Public Sub Main()
Dim s As String, m() As Byte, i As Long
s = "Проверочка"
m = s
Debug.Print vbCrLf & "=========="
For i = 0 To UBound(m) Step 2
Debug.Print Mid$(s, i \ 2 + 1, 1), m(i + 1), m(i)
Next i
m = StrConv(s, vbFromUnicode)
Debug.Print vbCrLf & "----------"
For i = 0 To UBound(m)
Debug.Print Mid$(s, i + 1, 1), m(i), Asc(Mid$(s, i + 1, 1))
Next i
End Sub
Алексей.Ф. писал(а):Если не трудно, можешь поподробней?
Я, честно говоря, в слабовато волоку.
Andrey Fedorov писал(а):
Ну куда уж подробней - тут аж кусок кода показывающий что происходит. Ну может кто другой еще объяснить сможет - не знаю...
Andrey Fedorov писал(а):А ты сам разберись - это же самый примитив, азы.
Ну не жевать же все до кашицы...
Алексей.Ф. писал(а):Я это и писал в первом сообщении темы. Но, когда начинаю использовать любой другой шрифт (греческий и т.д.), то он вместо кода символа, выдаёт код вопросительного знака!
Konst_One писал(а):автору: почитай это http://vbstreets.ru/VB/Articles/66364.aspx
...
Поддержка Юникода в VB6 как будто бы есть: хранение и обработка юникодных строк допускается безо всяких ограничений.
Хотя основа VB6 – технология COM/ActiveX – также позволяет передавать в свойствах и методах классов юникодные строки без ограничений, ни один из контролов в стандартной поставке VB6 этой возможностью не пользуется. Чтобы вводить и выводить юникодные строки, нужно либо заморачиваться с API, либо пользоваться контролами третьих фирм (платными и/или бажными)...
Konst_One писал(а):Dim mytext As String
mytext = RichTextBox1.Text
вот тут уже все и преобразуется
Алексей.Ф. писал(а):Как я понял из этой статьи, решить мой вопрос с помощью VB или невозможно или очень сложно
Алексей.Ф. писал(а):Но, когда начинаю использовать любой другой шрифт (греческий и т.д.), то он вместо кода символа, выдаёт код вопросительного знака!
Konst_One писал(а):если ты желаешь писать юникодную программу, в которой можно вводить в неком твоем контроле текст на разных языках в одном документе, то тебе по-любому придется разбираться с юникодом. простых решений на этом пути тебя не ждет, а подводных камней будет много
Dim ch As String, pos1 As Long, qq As String, v1 As String, w1 As String
pos = 1
pos1 = 1
rt = RichTextBox1.Text
For pos = 1 To Len(rt)
rb = Mid(rt, pos, 1)
v = Asc(rb)
If v = 121 Or v = 118 Or v = 113 Then
If v = 121 Then w = 113
If v = 118 Then w = 86
If v = 113 Then w = 121
Else
w = v
End If
For pos1 = 1 To Len(rct)
rct1 = Mid(rct, pos1, 1)
v1 = v1 + rct1
ch = ChrW(Val(v1))
Next pos1
RichTextBox2.Text = RichTextBox2.Text + ch
Сейчас этот форум просматривают: Yandex-бот и гости: 67