AVos002
|
Posted: Wed Jun 09, 2010 22:54 Post subject: |
|
|
Ïðèâåò Batya, ïðîøó ïðîùåíèÿ çà ïàóçó, íå áûëî âîçìîæíîñòè çàéòè íà ôîðóì.
| Batya wrote: | | À ÷åãî äîãîâàðèâàòüñÿ? Ïîêàæè êîä ôàéëà "C:\Program Files\Total Commander\Plugins\tcwhelp_b10\DemoScripts\Proba.vbs", êîòîðûé äîìà. Çàâòðà ðàçáåð¸ìñÿ. |
| Code: | '==============================================================
' Îòêðûòèå íîâîãî ñîîáùíèÿ MS Outlook ñ âëîæåííûìè ôàéëàìè
'
' Ïàðàìåòðû:
' {ôàéë äëÿ êîììåíòàðèÿ} {ôàéë-ñïèñîê ôàéëîâ äëÿ âëîæåíèÿ}
'
' Ïðèìåð ïàðàìåòðîâ ïðè âûçîâå èç TC:
' %P%N %L
'==============================================================
Option Explicit
Dim FSO, MSO, MSG, File, List, F
Set FSO = CreateObject("Scripting.FileSystemObject")
File = WScript.Arguments(0)
List = WScript.Arguments(1)
Set MSO = CreateObject("Outlook.Application")
Set MSG = MSO.CreateItem(0)
MSG.Subject = FSO.GetFileName(File) & " [" & GetComment(File) & "]"
MSG.Body = "Äîáðûé äåíü!" & vbCrLf & vbCrLf & _
"---" & vbCrLf & _
"Ñ Óâàæåíèåì, AVos002"
For Each F In Split(FSO.OpenTextFile(List).ReadAll, vbNewLine)
If F <> "" And FSO.FileExists(F) Then
MSG.Attachments.Add F
End If
Next
MSG.Display
Set MSG = Nothing
Set MSO = Nothing
Set FSO = Nothing
WScript.Quit
Function GetComment(pPath)
Const CommFile = "descript.ion"
Dim lPath, lName, lText, lComm
Dim lNameArch
lPath = FSO.GetParentFolderName(pPath) 'ïîëó÷èòü íàçâàíèå ïîëíîãî ïóòè
lName = FSO.GetFile(pPath).Name 'ïîëó÷èòü íàçâàíèå ôàéëà
lnameArch=lName
lName = RusDosWin(lName,0)
If Instr(lName, " ") > 0 Then lName = """" & lName & """" 'åñëè â íàèìåíîâàíèè ôàéëà åñòü ïðîáåëû, òîãäà íàçâàíèå çàêëþ÷èòü â êàâû÷êè
If lPath <> "" Then lPath = lPath & "\" 'åñëè íàèìåíîâàíèå ïóòè íå ïóñòîå, òîãäà ïðèáàâèòü â êîíåö ñëýø
If FSO.FileExists(lPath & CommFile) Then 'åñëè ôàéë descript.ion â òåêóùåé äèðåêòîðèè åñòü, òîãäà ïðîâåäåì äåéñòèÿ ïî ïîèñêó êîììåíòàðèÿ
lText = FSO.OpenTextFile(lPath & CommFile).ReadAll 'ïåðåäàòü â êîíòåéíåð (ïåðåìåííîé) òåêñò ôàéëà descript.ion
lComm = Filter(Split(lText, vbNewLine), lName & " ", True, 1) 'âûáðàòü ñòðîêó ñîîòâåòñòâóþùóþ íàèìåíîâàíèþ ôàéëà
If UBound(lComm) > - 1 Then 'åñëè âûáðàííàÿ ñòðîêà ñîäåðæèò çíà÷åíèå
GetComment = Replace(Mid(lComm(0), Len(lName) + 2), "Â", "") 'âûðåçàòü (Mid) êîììåíòàðèé è çàìåíèòü (Replace) çíà÷åíèå "Â" íà ïóñòîå
GetComment = Trim(Replace(GetComment, "\n", " "))
Else
GetComment = ""
End If
Else 'åñëè ôàéë descript.ion â òåêóùåé äèðåêòîðèè îòñóòñòâóåò
GetComment = "" 'òîãäà êîììåíòàðèé ïóñòîé
End If
GetComment=RusDosWin(GetComment,1)
End Function
'=========================================================================================================
Function RusDosWin(TextV, CodeV)
' Ïðåîáðàçîâàíèå ÊÈÐÈËËÈÖÛ:
' CodeV = 0 - èç DOS â Windows
' = 1 - îáðàòíî
' D - êîíñòàíòà êîäîâ ðóññêèõ ñèìâîëîâ äëÿ DOS (cp866)
' W - êîíñòàíòà êîäîâ ðóññêèõ ñèìâîëîâ äëÿ Windows (cp1251)
' îáå êîíñòàíòû ñîäåðæàò òàêóþ ïîñëåäîâàòåëüíîñòü ñèìâîëîâ:
' ÀÁÂ...ßàáâ...ÿ
'============================================
Const D = "ÀÁÂÃÄŨÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãä叿çèéêëìíîïðñòóôõö÷øùúûüýþÿ¹"
Const W = "€�‚ƒ„…ð†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥ñ¦§¨©ª«¬®¯àáâãäåæçèéêëìíîïü"
' ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^¦
' ============================================
If CodeV = 0 Then
RusDosWin = SymChange(TextV, W, D)
Else
RusDosWin = SymChange(TextV, D, W)
End If
'RusDosWin = D
End Function
Function SymChange(TextVal, NewCode, OldCode)
' Ïåðåêîäèðîâêà ñèìâîëîâ OldCode -> NewCode:
' â ïåðåìåííîé TextVal âñå ñèìâîëû íàáîðà OldCode çàìåíÿþòñÿ íà ñîîòâåòñòâóþùèå ñèìâîëû íàáîðà NewCode$
' ÂÍÈÌÀÍÈÅ! Äîëæíî âûïîëíÿòüñÿ óñëîâèå: LEN(NewCode)=LEN(OldCode)
Dim Sym, PromText
Dim Ltext
Dim i, k
Sym = "" ' TextVal
Ltext = Len(TextVal)
If Ltext > 0 Then
For i = 1 To Ltext
PromText = Mid(TextVal, i, 1) 'âûðåçàåì ñèìâîë èç ïåðâîíà÷àëüíîé ñòðîêè
If Asc(PromText) > 126 Then 'åñëè êîä âûðåçàííîãî ñèìâîëà áîëüøå 126 (ò.å. òðåáóåò ðàñøèôðîâêè)
k = InStr(OldCode, PromText) 'èùåì ïîðÿäêîâûé íîìåð âõîæäåíèÿ âûðåçàííîãî ñèìâîëà â òàáëèöó OldCode
If k > 0 Then 'òîãäà, åñëè ïîðÿäêîâûé íîìåð âõîæäåíèÿ áîëåå 0 (ò.å. íàéäåí)
Sym = Sym & Mid(NewCode, k, 1) 'òîãäà, äîáàâëÿåì ê ðåçóëüòèðóþùåé ñòðîêå ñîîòâåòñòâóþùèé ñèìâîë èç NewCode
Else 'åñëè â OldCode ñîîòâåòñòâóþùèé ñèìâîë íå íàéäåí,
MsgBox "Ñèìâîë «" & PromText & "íå íàéäåí" 'òîãäà ïîêàçàòü ýòîò ñèìâîë
end if
Else 'åñëè êîä âûðåçàííîãî ñèìâîëà ìåíüøå 126
Sym = Sym & PromText 'òîãäà âñòàâèì â ðåçóëüòèðóþùêþ ñòðîêó âûðåçàííûé ñèìâîë áåç èçìåíåíèé
End If
Next
End If
SymChange = Sym
End Function
|
Ïðè çàïóñêå îøèáêà ñëåäóþùàÿ - >
======================
Ñòðîêà: 78
Ñèìâîë: 18
Îøèáêà: Íåäîïóñòèìûé çíàê
======================
ß ïîñ÷èòàë êîîðäèíàòó îøèáêè - ýòî ñòðîêà â êîòîðîé îáúÿâëÿåòñÿ êîíñòàíòà W, ñèìâîë - ð (âîçìîæíî ôîðóì íå ïåðåäàåò äîëæíîé êîäèðîâêè) |
|