2013-04-02 59 views
0

如何求和這個現有的vbs循環中的值? 我想創建一個函數,總和(相加)的值LEN(SLINE) 和輸出線oOutStream.WriteLine mySum如何在循環中求和值

我不知道1)如何編寫函數和2)是否巢它在現有的循環中或創建一個新的循環。

Function MyOp() 
Dim nLine, sLine, nCount 

nCount = 1 
Do Until oInStream.AtEndOfStream 
nLine = oInStream.Line 
sLine = oInStream.ReadLine 

nCount = nCount +1 
oOutStream.WriteLine "<p id='" & Pad(nLine, 2, 0) & "'>" & sLine & "</p>" 

Loop 
MyOp = nCount 

End Function 

回答

0

如果我是正確的,然後......

Function MyOp() 
    Dim nLine, sLine, nCount, nLen 

    nCount = 1 
    Do Until oInStream.AtEndOfStream 
     nLine = oInStream.Line 
     sLine = oInStream.ReadLine 
     nLen = nLen + Len(sLine) 

     nCount = nCount +1 
     oOutStream.WriteLine "<p id='" & Pad(nLine, 2, 0) & "'>" & sLine & "</p>" 
    Loop 
    oOutStream.WriteLine nLen 
    MyOp = nCount 
End Function 

但是你可以用File.Size財產,而不需要計數相同的結果。

Set fso = CreateObject("Scripting.FileSystemObject") 
fLen = fso.GetFile("file.ext").Size 

P.S.自我更正:ReadLine刪除追尾換行符(Chr(13)& Chr(10)),因此您獲得的總金額將會小於的財產。

至於功能,我測試它與文本文件,並不知道如何得到TextStream對象形式EditPlus沒有保存的文件。你如何做到這一點,如果不是祕密?

+0

感謝Seeker,我嘗試了兩種方法,但無法讓他們工作。至於fso方法,我沒有保存的文件,而是一個打開的文本文件。我的腳本在文本編輯器(EditPlus)中作爲過濾器運行。我試着將fso變量改爲字符串值。 我也嘗試使用循環,但無法讓它工作。稍後我會再試一次。 –

+0

@ggg我用一些筆記更新了我的答案。 – seeker

+0

要在EditPlus中創建文本過濾器,您必須使用用戶工具(首選項/用戶工具)功能添加自定義腳本。 Web上有EditPlus的示例工作文本過濾器(vbs和javascript)。如果你需要幫助,我可以幫你配置一個。 –