2014-02-19 214 views
0

我需要一個來源讀取.txt內容從一個網址。如何從vb 6中逐行讀取文本文件內容?

我的文本文件內容的樣品,然後在VB6加載:

http://gigpars.com/upload/tpm_untitled-3.jpg

我的源:

Dim data As String 
data = Inet1.OpenURL("http://test.com/sample.txt") 
Text1.Text = data 
+0

除了我的回答,文本框默認情況下不會顯示多行。爲了正確顯示,將MultiLine屬性設置爲true,並確保源數據使用CRLF換行符。 – Deanna

回答

2

沒有什麼,只會「下載」,在一個時間,因爲它的線無法知道換行符是在哪裏下載的。

如果你只想讀/進程在時間線,你可以在換行符下載後分裂:

Dim Data As String 
Dim DataLines() As String 

Data = Inet1.OpenURL("http://test.com/sample.txt") 
DataLines = Split(Data, vbCrLf) 
For Index = LBound(DataLines) to UBound(DataLines) 
    MsgBox DataLines(Index) 
Next 

你必須要小心,以確保你有正確的線中斷正在讀取的數據。

0

在處理HTTP時,您必須考慮行分隔符和字符編碼。如果你可以在測試後做出假設,那麼你可以繞過一些檢查,只是硬編碼以適應你的需求。但是舊版互聯網傳輸控制(「Inet」)通常不是最好的選擇,而更多現代的替代品是作爲Windows的一部分發布的,因爲至少IE 5.5的出現,並且隨着更加古老的IE 5.5的安裝Windows版本。因此,他們甚至可以在幾乎所有仍在運行的Win95系統上運行。

'References to MSXML 3.0 or later, 
'    ADO 2.5 or later. 

Private Function GetHttpText(ByVal URL As String) As ADODB.Stream 
    Dim Req As MSXML2.XMLHTTP 
    Dim CharSet As String 
    Dim CharsetPos As Long 
    Dim LineSeparator As LineSeparatorEnum 

    Set Req = New MSXML2.XMLHTTP 
    Set GetHttpText = New ADODB.Stream 
    With GetHttpText 
     .Open 
     .Type = adTypeBinary 
     With Req 
      .Open "GET", URL, False 
      .send 
      CharSet = LCase$(.getResponseHeader("CONTENT-TYPE")) 
     End With 
     .Write Req.responseBody 
     CharsetPos = InStr(CharSet, "charset") 
     If CharsetPos Then 
      CharSet = Split(Mid$(CharSet, CharsetPos), "=")(1) 
     Else 
      'UTF-8 is a reasonable "default" these days: 
      CharSet = "utf-8" 
     End If 
     If CharSet = "utf-8" Then 
      LineSeparator = adLF 
     Else 
      'Your milage may vary here, since there is no line-end 
      'header defined for HTTP: 
      LineSeparator = adCRLF 
     End If 
     .Position = 0 
     .Type = adTypeText 
     .CharSet = CharSet 
     .LineSeparator = LineSeparator 
    End With 
End Function 

Private Sub DumpTextLineByLine() 
    With GetHttpText("http://textfiles.com/art/simpsons.txt") 
     'Read text line by line to populate a multiline TextBox 
     'just as a demonstration: 
     Do Until .EOS 
      Text1.SelText = .ReadText(adReadLine) 
      Text1.SelText = vbNewLine 
     Loop 
     .Close 
    End With 
End Sub