Считать приатачменный файл

Тема в разделе "Lotus - Программирование", создана пользователем romanko, 5 сен 2011.

  1. romanko

    romanko Гость

    Подскажите как
    1.взять прикрепленный файл
    2.сделать в нем перекодировку с win1251 на utf-8
    3.сохранить в том же документе.
     
  2. romanko

    romanko Гость

    Нужно перекодировать из dos в utf-8
    вот я на форуме нашел такой код из доса в виндовс

    Dim dos List As String 'в деклареишн
    Dim win List As String

    Function Dos2Win(ValueField_S As String) As String
    Dim win_ As Variant

    dos_$ = "абвгдеёжзийклмнопрстуфхцчшщъьэюя" + "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЭЮЯыЫ" + "№"

    ' абвгдеёжзийклмнопрстуфхцчшщъьэюя
    winTxt$ = "0 : "
    winTxt$ = winTxt$ + "160 : 1038 : 1118 : 1032 : 164 : 1168 : 1089 : 166 : 167 : 1025 : "
    winTxt$ = winTxt$ + "169 : 1028 : 171 : 172 : 173 : 174 : 1031 : 1072 : 1073 : 1074 : "
    winTxt$ = winTxt$ + "1075 : 1076 : 1077 : 1078 : 1079 : 1080 : 1081 : 1082 : 1084 : 1085 : "
    winTxt$ = winTxt$ + "1086 : 1087 : "

    ' АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЭЮЯыЫ
    winTxt$ = winTxt$ + "1026 : 1027 : 8218 : 1107 : 8222 : 8230 : 1088 : 8224 : 8225 : 8364 : "
    winTxt$ = winTxt$ + "8240 : 1033 : 8249 : 1034 : 1036 : 1035 : 1039 : 1106 : 8216 : 8217 : "
    winTxt$ = winTxt$ + "8220 : 8221 : 8226 : 8211 : 8212 : 63635 : 8482 : 1113 : 1114 : 1116 : "
    winTxt$ = winTxt$ + "1115 : 1119 : 1083 : 8250 : "

    ' №
    winTxt$ = winTxt$ + "1100"

    win_ = Evaluate ( winTxt$ )

    For i=1 To Len ( dos_$ )
    a$ = Uchr ( win_ ( i ) )
    b$ = Mid ( dos_$ , i , 1 )
    dos ( b$ ) = a$
    win ( a$ ) = b$
    Next



    TempStr2 = ""
    For k=1 To Len ( ValueField_S )
    ch$ = Mid ( ValueField_S , k , 1 )
    If Iselement ( win ( ch$ ) ) Then ch$ = win ( ch$ )
    TempStr2 = TempStr2 + ch$
    Next
    Dos2Win = TempStr2
    End Function



    Sub Click(Source As Button)
    Dim ws As New NotesUIWorkspace
    Dim uiDoc As NotesUiDocument
    Dim Doc As NotesDocument

    Set uiDoc = ws.CurrentDocument
    Set Doc = uiDoc.Document
    Dim Tmp As String
    Dim Tmp1 As String
    Tmp = Cstr(Doc.GetItemValue("Dos")(0))
    Tmp1 = Dos2Win(Tmp)

    Dim item As notesitem

    Set uidoc = ws.currentdocument
    Set doc = uidoc.document

    Set item = doc.ReplaceItemValue( "win", Tmp1 )
    Call doc.Save( True, True )
    Call uidoc.refresh
    End Sub


    можете подсказать как создать свой словарь чтобы он не в виндовс перековерчивал а в utf-8
     
  3. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    [off]Хорошо поговорить с самим собой...[/off]
     
  4. romanko

    romanko Гость

    А вот это нее мой случай???
    Dim filenames() As String
    i=-1
    n=1
    Set rtdoc=doc.GetFirstItem("Dos")
    If ( rtdoc.Type = RICHTEXT ) Then
    If Not Isempty(rtdoc.EmbeddedObjects) Then
    Set mime = result.CreateChildEntity( )
    Forall object In rtdoc.EmbeddedObjects
    If (object.Type = EMBED_ATTACHMENT ) Then
    filepath =Environ("Temp")+"\"+Cstr(Object.Name)
    Call object.ExtractFile(filepath)

    tmpSource=Object.Source
    i=i+1
    NameSource:
    If i=0 Then
    Redim Preserve filenames(0)
    filenames(0)=Object.Source
    Else
    For j=0 To Ubound(filenames)
    If filenames(j)=tmpSource Then
    tmpSource=Strleft(Object.Source,".")+Cstr(n)+"."+Strright(Object.Source,".")
    n=n+1
    Goto NameSource
    End If
    Next
    Redim Preserve filenames(Ubound(filenames)+1)
    filenames(Ubound(filenames))=tmpSource
    End If

    tmp=Evaluate({@ReplaceSubstring(@URLEncode("UTF-8";"}+Cstr(tmpSource)+{");"%";"=")})
    filename="=?utf-8?Q?"+tmp(0)+"?="

    Set mime = result.CreateChildEntity( )

    Set hdr = mime.CreateHeader("Content-Disposition")
    Call hdr.SetHeaderValAndParams(|attachment; filename="|+filename+|"|)
    Set hdr = mime.createHeader("Content-ID")
    Call hdr.setHeaderVal(filename)
    Set stream = s.CreateStream
    stream.Open filepath, "binary"
    mime.SetContentFromBytes stream, |application/octet-stream; name="|+filename+|"|, ENC_BINARY
    mime.EncodeContent ENC_BASE64
    End If
    End Forall
    End If
    End If
     
  5. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А тебе религия не позволяет проверить? :lovecodeby:
     
  6. romanko

    romanko Гость

    Так не получается проверить я ставлю этот код на кнопку в форме меняю в нем вот тут только Set rtdoc=doc.GetFirstItem("Имя поля") прикрепляю в это поле файл, сохраняю,потом клацаю на кнопку с кодом оно ругается на эту же строчку.
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    А думаешь у нас получится? :lovecodeby:
     
  8. romanko

    romanko Гость

    Ну вроде ошибка из-за того что переменная rtdoc ранее не объявлена, какого типа она должна быть?
     
  9. nvyush

    nvyush Lotus team
    Lotus team

    Регистрация:
    22 апр 2009
    Сообщения:
    2.317
    Симпатии:
    0
    Судя по коду - NotesRichtextItem
     
Загрузка...

Поделиться этой страницей