2009-09-13 5 views
0
download-dir: request-dir 
Print ["downloading " "VStudio2008Express.iso" "..." ] 
url: http://go.microsoft.com/fwlink/?LinkId=104679 
file-save: to-rebol-file rejoin [download-dir "VStudio2008Express.iso"] 
request-download/to url file-save 

В конце концов, тогда как индикатор выполнения показал завершение загрузки:Rebol Request-Download не поддерживает большой файл: как исправить?

** Script Error: Not enough memory 
** Where: append 
** Near: insert tail series :value 
>> 

Так как исправить запрос-загрузку, так как это функция антресоли: функции чтения

func [ 
    {Request a file download from the net. Show progress. Return none on error.} 
    url [url!] 
    /to "Specify local file target." local-file [file! none!] 
    /local prog lo stop data stat event-port event 
][ 
    view/new center-face lo: layout [ 
     backeffect [gradient 1x1 water gray] 
     space 10x8 
     vh2 300 gold "Downloading File:" 
     vtext bold center 300 to-string url 
     prog: progress 300 
     across 
     btn 90 "Cancel" [stop: true] 
     stat: text 160x24 middle 
    ] 
    stop: false 
    data: read-thru/to/progress/update url local-file func [total bytes] [ 
     prog/data: bytes/(max 1 total) 
     stat/text: reform [bytes "bytes"] 
     show [prog stat] 
     not stop 
    ] 
    unview/only lo 
    if not stop [data] 
] 
+0

Я никогда не использовал REBOL/View, поэтому я мало знаю об этом, но у меня есть два подозрения. Это либо ограничение чтения, либо ограничение самого REBOL, которое, скорее всего, будет исправлено с помощью REBOL 3. –

+0

Насколько велик файл, который вы пытаетесь загрузить? –

+0

Это 800 Mo, но у меня есть 3 Go RAM, поэтому он не должен был провалиться, но возможно, это потому, что он не использует это? http://www.rebol.com/article/0199.html Режим поиска добавлен для случайного доступа к крупным файлам http://community.livejournal.com/rebol Копирование и контрольная сумма Большие файлы –

ответ

3

для Rebol сразу считывает все входные данные в память и не может использоваться на больших наборах данных. Вы должны открыть порт и скопировать данные из него в куски для обработки больших наборов данных.

Я бы подумал, что функция загрузки запроса может быть изменена для использования портов как для входных, так и для выходных данных. Эта нить из списков рассылки Rebol может помочь вам:

http://www.rebol.org/ml-display-thread.r?m=rmlFQXC

Вы можете найти более полный пример на блоге Карла на http://www.rebol.com/cgi-bin/blog.r?view=0281#comments

Даже при использовании этого метода есть предел примерно 2Gb до размера файлы, которые могут быть обработаны в Rebol 2.

+0

Да нет Vid в примере :) –

+0

Request-Download имеет VID , –