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

  • Автор темы romanko
  • Дата начала
R

romanko

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

romanko

Гость
#2
Подскажите как
1.взять прикрепленный файл
2.сделать в нем перекодировку с win1251 на utf-8
3.сохранить в том же документе.
Нужно перекодировать из 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
 
R

romanko

Гость
#4
А вот это нее мой случай???
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
 
R

romanko

Гость
#6
А тебе религия не позволяет проверить? :lovecodeby:
Так не получается проверить я ставлю этот код на кнопку в форме меняю в нем вот тут только Set rtdoc=doc.GetFirstItem("Имя поля") прикрепляю в это поле файл, сохраняю,потом клацаю на кнопку с кодом оно ругается на эту же строчку.