функция кодирования convert_cyr_string ("текст", &

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
strike1984
Начинающий
Начинающий
 
Сообщения: 17
Зарегистрирован: 25.07.2006 (Вт) 11:26

функция кодирования convert_cyr_string ("текст", &

Сообщение strike1984 » 20.09.2006 (Ср) 11:36

При получении писем из почтового ящика в программу, сообщения прочитать невозможно, так как там кодировка koir-8, как правильно подключить эту функцию, чтобы например текст в koir-8 из text1.text отображался в кодировке windows1251 в text2.text?
я в кнопке делаю так
text2.text=convert_cyr_string (text1.text, "k", "w")

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 20.09.2006 (Ср) 12:09

Примерно так

Код: Выделить всё
Option Explicit

Public Enum CodePage
  [Windows-1251] = 1251&
  [DOS] = 866&
  [KOI8-R] = 20866&
End Enum

Private Const MB_PRECOMPOSED As Long = &H1
Private Const MB_USEGLYPHCHARS As Long = &H4
Private Const MB_COMPOSITE As Long = &H2

Private Declare Function WideCharToMultiByte Lib "kernel32.dll" ( _
   ByVal CodePage As Long, _
   ByVal dwFlags As Long, _
   ByVal lpWideCharStr As String, _
   ByVal cchWideChar As Long, _
   ByVal lpMultiByteStr As String, _
   ByVal cchMultiByte As Long, _
   ByVal lpDefaultChar As String, _
   ByVal lpUsedDefaultChar As Long) As Long
   
Private Declare Function MultiByteToWideChar Lib "kernel32.dll" ( _
   ByVal CodePage As Long, _
   ByVal dwFlags As Long, _
   ByVal lpMultiByteStr As String, _
   ByVal cchMultiByte As Long, _
   ByVal lpWideCharStr As String, _
   ByVal cchWideChar As Long) As Long
   
   
   
Public Function Convert( _
    ByVal sString As String, _
    ByVal cpFrom As CodePage, _
    ByVal cpTo As CodePage) As String
   
  Dim lLenght As Long, lRetval As Long
  Dim sDstval As String, sRetval As String
 
  lLenght = Len(sString)
 
  sDstval = String(lLenght * 2, vbNullChar)
  sRetval = String(lLenght * 2, vbNullChar)
 
  lRetval = MultiByteToWideChar( _
    cpFrom, _
    MB_PRECOMPOSED, _
    sString, _
    lLenght, _
    sDstval, _
    lLenght _
  )
 
 
  lRetval = WideCharToMultiByte( _
    cpTo, _
    0&, _
    sDstval, _
    lRetval, _
    sRetval, _
    lLenght * 2, _
    ByVal 0&, _
    0 _
  )
 
  Convert = Left(sRetval, lRetval)
 
End Function


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 106

    TopList