Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
Dimen
-
- Обычный пользователь

-

-
- Сообщения: 82
- Зарегистрирован: 25.05.2009 (Пн) 15:10
Dimen » 20.07.2009 (Пн) 19:59
Делаю авторизацию через контрол winsock, получаю текст страницы, текст страницы неполный. Он его режет по кускам и отправляет, как собрать весь код?
- Код: Выделить всё
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
Text1.Text = Data
End Sub
Íå óïóñêàéòå øàíñ!
-
VBTerminator
-
- Постоялец

-

-
- Сообщения: 415
- Зарегистрирован: 19.11.2008 (Ср) 20:10
-
VBTerminator » 20.07.2009 (Пн) 20:13
1. Определи метку конца передачи (пусть это будет NULL).
2.
- Код: Выделить всё
Dim tmp As String
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
tmp = tmp & Data
If Right(tmp, 1) = vbNullChar Then Text1.Text = tmp: tmp = ""
End Sub
-
Dimen
-
- Обычный пользователь

-

-
- Сообщения: 82
- Зарегистрирован: 25.05.2009 (Пн) 15:10
Dimen » 20.07.2009 (Пн) 20:26
Спасибо. Но что то результата нет, не работает.
Íå óïóñêàéòå øàíñ!
-
Dimen
-
- Обычный пользователь

-

-
- Сообщения: 82
- Зарегистрирован: 25.05.2009 (Пн) 15:10
Dimen » 20.07.2009 (Пн) 20:37
вот так сработало:
- Код: Выделить всё
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
tmp = tmp & Data
'If Right(tmp, 1) = vbNullChar Then
Text1.Text = tmp
End Sub
Спасибо!
Íå óïóñêàéòå øàíñ!
-
Dimen
-
- Обычный пользователь

-

-
- Сообщения: 82
- Зарегистрирован: 25.05.2009 (Пн) 15:10
Dimen » 20.07.2009 (Пн) 21:00
Кстати что то по началу ступил жестко можно же вот так:
- Код: Выделить всё
Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim Data As String
Winsock1.GetData Data
Text1.Text = Text1.Text + Data
End Sub
Íå óïóñêàéòå øàíñ!
-
Хакер
-
- Телепат

-

-
- Сообщения: 16496
- Зарегистрирован: 13.11.2005 (Вс) 2:43
- Откуда: Казахстан, Петропавловск
-
Хакер » 21.07.2009 (Вт) 2:09
VBTerminator, зачем ты советуешь гадость?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.
-
awl100Alex
-
- Постоялец

-
-
- Сообщения: 355
- Зарегистрирован: 29.01.2008 (Вт) 15:19
- Откуда: Украина
awl100Alex » 21.07.2009 (Вт) 10:15
DimenЗачем отправлять текст по кускам??? Обрезание... скорее всего делает Text1 – это у него такой глюк, поэтому оправляй весь текст страницы, а в Text1 загоняй через...
- Код: Выделить всё
SendMessage Text1.hwnd, WM_SETTEXT, ByVal 0&, ByVal Data
Вот тут посмотри аналогичная проблема...
http://bbs.vbstreets.ru/viewtopic.php?f=1&t=39495
-
dr.MIG
-
- Гуру

-

-
- Сообщения: 1441
- Зарегистрирован: 18.12.2004 (Сб) 9:53
- Откуда: г.Ярославль
-
dr.MIG » 21.07.2009 (Вт) 10:51
awl100Alex, не надо предлагать ерунду. По-твоему, текст всегда приходит одним куском? Если ты так считаешь, то ты глубоко заблуждаешься.
P.S. а обрезание делает исключительно хирург.
Salus populi suprema lex
-
arvitaly
-
- Постоялец

-
-
- Сообщения: 485
- Зарегистрирован: 12.04.2009 (Вс) 0:30
- Откуда: Казань
-
arvitaly » 21.07.2009 (Вт) 11:31
- Код: Выделить всё
ByVal bytesTotal As Long
зависит от скорости и ширины канала
-
JohnK
-
- Постоялец

-

-
- Сообщения: 874
- Зарегистрирован: 03.08.2002 (Сб) 0:35
- Откуда: 48.02` 37.58`
-
JohnK » 21.07.2009 (Вт) 12:06
Я в своем проекте делал так: посылаю кусок текста, а впереди длину текста:
- Код: Выделить всё
sss = CStr(Len(sss)) & vbCrLf & sss
WS.SendData sss
Принимающая сторона должна склеивать пришедшее и резать по длине, которая передается в начале строки.
- Код: Выделить всё
next_i = 1: bExit = False
While Not bExit
i = InStr(next_i, sData, vbCrLf)
If i = 0 Then Exit Sub
CRC = Val(Trim(Mid(sData, next_i, i)))
If CRC = 0 Then Exit Sub
Our_string=(Mid(sData, i + 2, CRC))
next_i = i + 2 + CRC
If CRC > Len(sData) Then Exit Sub
Wend
SELECT * FROM girls WHERE tits NOT NULL AND age BETWEEN 18 AND 25 ORDER BY Beauty
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Google-бот, Yandex-бот и гости: 12