Alex Mals писал(а):Решения не знаю, но есть две версии, попробуй
1. StrConv vbUnicode и обратно
Пробовал. Нифига.
Вот исходный текст.
=========================
Пpивет Ivan,
01 маp 2005 ты писал(а) по поводу *эха жива?. *
IS>Здpавия желаю Ruslan
AV>>>>>>>А что это у тебя в тиpлайне за базе pидеp такой завёлся?
RD>>>>>> Да так... Звеpёк домашний...
=========================
А вот тот текст, что я получаю на выходе
=========================
p825B Ivan,
01 <0p 2005 BK ?8A0;(0) ?> ?>2>4C *ME0 6820?. *
IS>4p028O 65;0N Ruslan
AV>>>>>>> GB> MB> C B51O 2 B8p;09=5 70 1075 p845p B0:>9 702Q;AO?
RD>>>>>> 0 B0:... 25pQ: 4><0H=89...
==========================
А вот процедура, которая возвращает мне текст из RTB
- Код: Выделить всё
Function GetText() As String
Dim s As String
Dim nLen As Long
Dim nChar As Long
Dim LinesCount As Long
Dim i As Long, sTemp As String
Const nLine = 2
LinesCount = SendMessage(RTBedit.hwnd, EM_GETLINECOUNT, &O0, &O0)
If LinesCount = 1 And Len(Trim$(RTBedit.Text)) = 0 Then
GetText = vbNullString
Exit Function
End If
sTemp = vbNullString
For i = 0 To LinesCount
nChar = SendMessage(RTBedit.hwnd, EM_LINEINDEX, i, ByVal 0&)
If nChar <> -1 Then
nLen = SendMessage(RTBedit.hwnd, EM_LINELENGTH, nChar, ByVal 0&)
If nLen < 2 Then nLen = 2
s = String$(2, 0)
CopyMemory ByVal s, nLen, 2
s = s & String$(nLen - 2, 0)
nLen = SendMessage(RTBedit.hwnd, EM_GETLINE, i, ByVal s)
s = left$(s, nLen)
Debug.Print s
sTemp = sTemp & s & vbCrLf
Else
sTemp = sTemp & vbCrLf
End If
Next i
GetText = sTemp
End Function
Alex Mals писал(а):2. послать EM_SETTEXTMODE с параметром ... or TM_SINGLECODEPAGE,
помогает в некоторых случаях получить русский текст вместо всякого г...
Это как? Пример можно?