PDA

View Full Version : سوال: مشکل با نمایش فایل text از اینترنت بر روی text box (مشکل خط های پی در پی!)



R2du-soft
جمعه 14 مهر 1391, 19:45 عصر
سلام به همه
ما که هرچی تاپیک میزنیم کسی جواب نمیده!
ولی خدایی به این مشکل خودم هرکاری کردم رفع نشد ، لطفا اساتید گرامی راهنماییم کنید.

من یه فایل تکست از سرور روی تکست باکس نمایش میدم.
مشکل من اینجاست که توی فایل تکستم چند خط هست مثلا دقیقا این هست:

Internet Download Manager 6.12 Build 21 Final Retail

Version: 6.12 Build 21

Zip Password: www.r2du-soft.ir

و آدرس فایل http://www.r2du-soft.ir/download/!!list_program/Idm_info.txt


خوب حالا وقتی این رو توس تکست باکس نمایش میدم ، خط ها پی در پی هستن و بین هر خط فاصله نیست!
دقیقا به شکل زیر:

Internet Download Manager 6.12 Build 21 Final RetailVersion: 6.12 Build 21Zip Password: www.r2du-soft.ir


چطور میشه عین فایل تکست رو نمایش داد؟
نمیخوام فایل دانلود شه بعد نمایش داده بشه ، میخوام مستقیم از روی سرور خونده بشه و نمایش داده بشه تا سرعت کار بالا بره



مرسی

امین مستانی
جمعه 14 مهر 1391, 20:48 عصر
سلام علیکم

من در تاپیک قبلی پاسختون رو دادم



سلام علیکم

فکر میکنم مشکل از فایل متنی شما باشه

شما فایل رو بصورت ANSI سیو کنید و دوباره امتحان کنید

Text1.Text = GetWebContents("http://kokopark.persiangig.com/idm.txt")




از این کد هم میتونید استفاده کنید که برنامه قفل هم نمیکنه

در قسمت References گزینه Microsoft WinHTTP Services, version 5.1 رو انتخاب کنید


Private WithEvents HttpSocket As WinHttp.WinHttpRequest

Private Sub Command1_Click()
On Error Resume Next
Set HttpSocket = New WinHttp.WinHttpRequest
HttpSocket.Open "GET", Text1.Text, True
HttpSocket.SetRequestHeader "Accept", "*/*"
HttpSocket.Send
End Sub

Private Sub HttpSocket_OnResponseFinished()
Text1.Text = HttpSocket.ResponseText
End Sub



موفق باشید

R2du-soft
جمعه 14 مهر 1391, 22:46 عصر
درسته امین جان با ANSI مشکل کلمات "حححححح" که داخل تکست باکس میومد حل شد ممنون بابتش داداشی
فقط این مشکلی که تو این تاپیک گفتم فرق داره ، متن داخل فایل تکست توی تکست باکس نمایش داده میشه ولی پی در پی ، (خط به خط نیست)
ممنون گلم
من فایل رو گفتم توی browser نشون بده که حل شد
با کد زیر:







Option Explicit

Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long

Private Declare Function InternetOpen _
Lib "wininet.dll" _
Alias "InternetOpenA" (ByVal sAgent As String, _
ByVal lAccessType As Long, _
ByVal sProxyName As String, _
ByVal sProxyBypass As String, _
ByVal lFlags As Long) As Long

Private Declare Function InternetOpenUrl _
Lib "wininet.dll" _
Alias "InternetOpenUrlA" (ByVal hOpen As Long, _
ByVal sUrl As String, _
ByVal sHeaders As String, _
ByVal lLength As Long, _
ByVal lFlags As Long, _
ByVal lContext As Long) As Long

Private Declare Function InternetReadFile _
Lib "wininet.dll" (ByVal hFile As Long, _
ByVal sBuffer As String, _
ByVal lNumBytesToRead As Long, _
lNumberOfBytesRead As Long) As Integer

Private Declare Function InternetCloseHandle _
Lib "wininet.dll" (ByVal hInet As Long) As Integer

Private Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Private Const INTERNET_OPEN_TYPE_DIRECT = 1
Private Const INTERNET_OPEN_TYPE_PROXY = 3
Private Const INTERNET_FLAG_RELOAD = &H80000000
Public Function GetWebContents(ByVal sUrl As String) As String
Dim hOpen As Long

Dim hOpenUrl As Long

Dim bDoLoop As Boolean

Dim bRet As Boolean

Dim sReadBuffer As String * 2048

Dim lNumberOfBytesRead As Long

Dim sBuffer As String

hOpen = InternetOpen("vb", INTERNET_OPEN_TYPE_PRECONFIG, vbNullString, vbNullString, 0)

hOpenUrl = InternetOpenUrl(hOpen, sUrl, vbNullString, 0, INTERNET_FLAG_RELOAD, 0)

bDoLoop = True

While bDoLoop

sReadBuffer = vbNullString
bRet = InternetReadFile(hOpenUrl, sReadBuffer, Len(sReadBuffer), lNumberOfBytesRead)
sBuffer = sBuffer & Left$(sReadBuffer, lNumberOfBytesRead)

If Not CBool(lNumberOfBytesRead) Then bDoLoop = False
DoEvents
Wend

If hOpenUrl <> 0 Then InternetCloseHandle (hOpenUrl)
If hOpen <> 0 Then InternetCloseHandle (hOpen)
GetWebContents = sBuffer

End Function





Private Sub Form_Load()
WebBrowser2.Navigate ("http://www.r2du-soft.ir/download/!!list_program/Idm_info.txt")
End Sub

amin32
شنبه 15 مهر 1391, 03:37 صبح
خاصیت MultiLine تکست باکس رو روی True گذاشتید؟

R2du-soft
شنبه 15 مهر 1391, 08:50 صبح
از اون نیست تستش کردم

vbhamed
شنبه 15 مهر 1391, 09:35 صبح
سلام

ميشه يك نمونه از فايل txt رو ضميمه كنيد

amin32
شنبه 15 مهر 1391, 10:01 صبح
فایلتون رو با WinHTTP Services لود کنید و در آخر دستور زیر رو هم اضافه کنید.


Text1.Text = Replace(Text1.Text, Chr(10), vbNewLine)

R2du-soft
شنبه 15 مهر 1391, 14:22 عصر
سلام

ميشه يك نمونه از فايل txt رو ضميمه كنيد

بفرمایید این آدرسش:
http://www.r2du-soft.ir/download/!!list_program/Idm_info.txt

اینم از زمینه همون فایل
93653

R2du-soft
شنبه 15 مهر 1391, 14:27 عصر
فایلتون رو با WinHTTP Services لود کنید و در آخر دستور زیر رو هم اضافه کنید.


Text1.Text = Replace(Text1.Text, Chr(10), vbNewLine)


امین جان میشه در مورد WinHTTP Services بیشتر توضیح بدی چه چطور فایل رو لود کنم؟!

amin32
یک شنبه 16 مهر 1391, 07:11 صبح
امین جان میشه در مورد WinHTTP Services بیشتر توضیح بدی چه چطور فایل رو لود کنم؟!

در مورد نحوه لود کردن دوستان در بالا توضیح دادن. منم کد کامل رو میزارم براتون:


Private WithEvents HttpSocket As WinHttp.WinHttpRequest

Private Sub Command1_Click()
On Error Resume Next
Set HttpSocket = New WinHttp.WinHttpRequest
HttpSocket.Open "GET", "http://www.r2du-soft.ir/download/!!list_program/Idm_info.txt", True
HttpSocket.SetRequestHeader "Accept", "*/*"
HttpSocket.Send
End Sub

Private Sub HttpSocket_OnResponseFinished()
Text1.Text = HttpSocket.ResponseText
Text1.Text = Replace(Text1.Text, Chr(10), vbNewLine)
End Sub

البته یادتون باشه Microsoft WinHTTP Services, version 5.1 رو در قسمت References فعال کنید.

R2du-soft
یک شنبه 16 مهر 1391, 08:43 صبح
امین جان دقیقا از همین کد استفاده کردم ولی باز همین مشکل رو دارم
شما کد رو مستقیم با ویژوال تست کردی؟

93678

amin32
یک شنبه 16 مهر 1391, 10:30 صبح
برنامه رو برات ضمیمه کردم . روی سیستم من که جواب داد.
93687

93686

R2du-soft
یک شنبه 16 مهر 1391, 10:58 صبح
اوه ! مرسی amin32 (http://barnamenevis.org/member.php?162007-amin32) جان بسیار عالی بود ، خاصیت MultiLine رو یادم رفته بود True کنم
1 دنیا ممنون

vbhamed
دوشنبه 17 مهر 1391, 10:01 صبح
از اون نیست تستش کردم
سلام
شما كه گفتيد تست كرده بوديد اين خاصيت رو

R2du-soft
دوشنبه 17 مهر 1391, 13:42 عصر
درسته این خاصیت رو تست کرده بودم ، ولی با کد جدید که آقا امین لطف کردن و گفتن ، این خاصیت رو یادم رفت true کنم

Nemesis_0131
سه شنبه 23 آبان 1391, 12:25 عصر
عذر می خوام که دوباره این تایپیک رو دوباره باز میکنم ولی اگه بخوای هر خط نوشته شما در یک ایندکس listbox قرار بگیره چیکار باید کرد؟
یعنی اینجا 3 خط داریم
و در list box هم 3تا خط به خط اضافه بشن

محسن واژدی
سه شنبه 23 آبان 1391, 13:19 عصر
عذر می خوام که دوباره این تایپیک رو دوباره باز میکنم ولی اگه بخوای هر خط نوشته شما در یک ایندکس listbox قرار بگیره چیکار باید کرد؟
یعنی اینجا 3 خط داریم
و در list box هم 3تا خط به خط اضافه بشن

سلام علیکم
ضمیمه پست 12 رو دانلود و کدهای زیر را در Form1 جایگزین کنین:
Private WithEvents HttpSocket As WinHttp.WinHttpRequest
Private Sub Command1_Click()
On Error Resume Next
Set HttpSocket = New WinHttp.WinHttpRequest
HttpSocket.Open "GET", "http://www.r2du-soft.ir/download/!!list_program/Idm_info.txt", True
List1.Clear
HttpSocket.Send
End Sub

Private Sub HttpSocket_OnResponseFinished()
Dim vCI
For Each vCI In Split(HttpSocket.ResponseText, Chr(10))
List1.AddItem vCI
Next
End Sub

موفق باشید