1. Вы находитесь в сообществе Rubukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на различные языки плагины наших коллег из других стран.
    Скрыть объявление
Скрыть объявление
В преддверии глобального обновления, мы проводим исследования, которые помогут нам сделать опыт пользования форумом ещё удобнее. Помогите нам, примите участие!

Нужна помощь Дельфистов!

Тема в разделе "Оффтопик", создана пользователем goul, 27 янв 2013.

  1. Автор темы
    goul

    goul Старожил Пользователь

    Баллы:
    103
    Skype:
    goul1995
    Имя в Minecraft:
    goul
    Вот кусочек кода:
    Код:
    try
    Http:=TIdHTTP.Create(Self);
    Stream:=TMemoryStream.Create;
    // это заголовки при отправке (можно не трогать)
        Http.Request.Host:='Мой хост';
        Http.Request.UserAgent:='Mozilla/5.0 (Windows NT 5.1; rv:17.0) Gecko/20100101 Firefox/17.0';
        Http.Request.Accept:='text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
        Http.Request.AcceptLanguage:='ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3';
        Http.Request.AcceptCharSet:='windows-1251,utf-8;q=0.7,*;q=0.7';
        Http.Request.Referer:='http://рефер/';
        url1:=('Тут моя ссылка'+JarArray[i]);
          HTTP.HandleRedirects:=true;
        HTTP.Get(url1,Stream);
        finally
          Stream.SaveToFile('c:/'+dir+'/'+'bin/'+JarArray[i]);
          Stream.Free;
          Application.ProcessMessages;
          label3.Caption:=('Скачиваем файл '+JarArray[i]+'.');
    //      sleep(500);
          end;
        end;
    


    Файлы то он скачивает, но при загрузке большого файла (>2 mb) форма просто замерзает.
    Подскажите, что и куда запихнуть?

    Без лайков не оставлю :)
     
  2. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    О господи лаунчер на делфи, чур меня, закопайте это некросплатформенное г обратно.
    А по теме: тебе нужен компонет TIDAntiFreeze
     
  3. LiveD

    LiveD Старожил Пользователь

    Баллы:
    153
    Skype:
    LiveDRus
    Это норма.
     
  4. Автор темы
    goul

    goul Старожил Пользователь

    Баллы:
    103
    Skype:
    goul1995
    Имя в Minecraft:
    goul
    Уже пробовали. Не помогает. По совету знакомого, попробую запихать в отдельный поток.
     
  5. Shevchik

    Shevchik Старожил Пользователь

    Баллы:
    173
    Имя в Minecraft:
    _Shevchik_
    Ты хоть для него через сколько секунд он перерисует поставил то, а то по дефолту там 100 секунд то.
     
    goul нравится это.
  6. NaparNIK

    NaparNIK Активный участник Пользователь

    Баллы:
    78
    Хороший совет.
    Не лучше ли вместо TMemoryStream использовать TFileStream? Еще в твоем коде надпись на label3 обновится только после скачивания файла.
    Вообще странный код у тебя. Допустим, если не получится скачать, пустой MemoryStream все равно сохранится в файл. Да и что будет если не получится сохранить в файл? Нужно предусмотреть возможные ошибки.
    Судя по всему, ты повторяешь этот код в цикле для каждого файла из JarArray. Не самое удачное решение. К тому же, созданный TMemoryStream ты уничтожаешь, а TIdHTTP - нет.
    Уж если автор делает на Delphi, значит кроссплатформенность ему не нужна.
     
    МиднайтЖелаетВамДобра и goul нравится это.
  7. Russiablackbird

    Russiablackbird Старожил Пользователь

    Баллы:
    103
    Skype:
    russiablackbird
    Ну рано такие резкие фразы пускать =) Lazarus вполне годная штука,где можно химичить с opengl
     
  8. Russiablackbird

    Russiablackbird Старожил Пользователь

    Баллы:
    103
    Skype:
    russiablackbird
    Какой накуй антифриз? Онли потоки
     
    Vedroyder и goul нравится это.
  9. Автор темы
    goul

    goul Старожил Пользователь

    Баллы:
    103
    Skype:
    goul1995
    Имя в Minecraft:
    goul
    Спасибо, поправил. Выкинул обновление label за try. Пока ещё не разобрался с потоками, подставил Label3.Repaint; С tfilestream ошибки вылезают, почитаю, потом начну делать.
    Проверка "а есть ли файл то на сервере" и "доступен ли он" я с грехом пополам исполнил выше.
    Да, верно, исправил. Как же тогда проверять, если не в цикле?
    Это моя пробная работа. Для себя.
     

Поделиться этой страницей