|
09.06.2012, 15:22
|
#1
|
|
TStreamFactoryWWW
Написал небольшой класс, который позволяет без гемороя качать ресурсы с инета.
Type TStreamFactoryWWW Extends TStreamFactory
Method CreateStream:TStream( url:Object,proto$,path$,readable,writeable )
If proto = "www"
Local stream:TStream = ReadStream("http::"+path)
If Not stream Then Return Null
Local temp:TStream = WriteStream("temp")
Repeat
temp.WriteByte(stream.ReadByte())
Until stream.Eof()
stream.Close()
temp.Close()
Return ReadStream("temp")
End If
End Method
End Type
New TStreamFactoryWWW
юзаем так : LoadImage("www::blitzbasic.com/img/master_of_defence.jpg")
|
|
|
Эти 3 пользователя(ей) сказали Спасибо за это полезное сообщение:
|
|
10.06.2012, 16:46
|
#2
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: TStreamFactoryWWW
Ещё бы в отдельном потоке и кеширование с докачкой.. :D
|
(Offline)
|
|
10.06.2012, 17:38
|
#3
|
|
Ответ: TStreamFactoryWWW
Сообщение от MoKa
кеширование с докачкой.. :D
|
SuperStrict
Graphics 1024, 768
AutoMidHandle(True)
Type TStreamFactoryWWW Extends TStreamFactory
Method CreateStream:TStream(url:Object, proto:String, path:String, readable:Int, writeable:Int)
If proto = "www"
Local ping:Int = 100
Local stream:TStream
DeleteFile("temp")
Local temp:TStream = WriteStream("temp")
Repeat
If stream
If stream.Eof() Then Exit
temp.WriteByte(stream.ReadByte())
Continue
End If
If ping = 0 Then Return Null
stream = ReadStream("http::" + path)
If stream Then stream.SkipBytes(temp.Size())
ping:-1
Forever
stream.Close()
temp.Close()
Return OpenStream("temp", readable, writeable)
End If
End Method
End Type
New TStreamFactoryWWW
Local image:TImage = LoadImage("www::www.blitzbasic.com/img/master_of_defence.jpg")
While Not KeyHit(KEY_ESCAPE)
Cls
SetBlend(ALPHABLEND)
SetAlpha(1.0)
SetColor(255,255,255)
SetTransform()
DrawImage(image,MouseX(),MouseY(),0)
Flip(1)
Wend
End
Про это ?
Насчет птоков, в БМаксе есть потоки... помоему лучше поточный даунлоад организовать отдельно
|
|
|
Сообщение было полезно следующим пользователям:
|
|
10.06.2012, 19:17
|
#4
|
|
Ответ: TStreamFactoryWWW
Эта версия получше (с проверкой сокета )
SuperStrict
Graphics 1024, 768
AutoMidHandle(True)
Type TStreamFactoryWWW Extends TStreamFactory
Method CreateStream:TStream(url:Object, proto:String, path:String, readable:Int, writeable:Int)
If proto = "www"
Local ping:Int = 100
Local stream:TSocketStream
DeleteFile("temp")
Local temp:TStream = WriteStream("temp")
Repeat
If stream
If stream.Eof() Then Exit
If SocketConnected(stream._socket)
temp.WriteByte(stream.ReadByte())
Continue
EndIf
stream = Null
End If
If ping = 0 Then Return Null
stream = TSocketStream(ReadStream("http::" + path))
If stream Then stream.SkipBytes(temp.Size())
ping:-1
Forever
stream.Close()
temp.Close()
Return OpenStream("temp", readable, writeable)
End If
End Method
End Type
New TStreamFactoryWWW
Local image:TImage = LoadImage("www::www.blitzbasic.com/img/master_of_defence.jpg")
While Not KeyHit(KEY_ESCAPE)
Cls
SetBlend(ALPHABLEND)
SetAlpha(1.0)
SetColor(255, 255, 255)
SetTransform()
DrawImage(image,MouseX(),MouseY(),0)
Flip(1)
Wend
End
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 19:16.
|