Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Загрузка документа с сервера в программу 
:(
    Опции темы
welt
  Дата 13.4.2006, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



Привет всем.
Вопрос такой.
На сервере хранится документ Excel-файл с расширением .xls
Этот файл весит очень много от 2 Мб до 10 Мб.
На компьютере пользователя есть программа, которая каким-то образом загружает этот файл и отображает его. Причем делает она это во много раз быстрее, чем, если просто скачивать его через интернет.
Экспорт экселевского файла в программу-это непроблема, если файл локальный, т.е. находится на харде.
(смотреть Вот эту тему ).
Вся проблема в том как загрузить его с сервера. Может быть для быстрой загрузки, разбить его на части или загнать в динамический массив?
Подскажите, как осуществить такую загрузку ...

PM MAIL   Вверх
Snowy
Дата 13.4.2006, 11:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Думаю, что никак.
Excel запускает его быстро, потому что он отображает его в процессе загрузки.
Т.е. файл еще не загружен, но самый верх смотреть уже можно.
Для импорта же необходимо, чтобы Excel загрузил файл целиком. И только потом производить операции с ним.

Альтернатива такова:
Поднять на сервере ODBC источник основанный на этом файле.
Тогда можно будет грузить его строки динамически через ODBC.
PM MAIL   Вверх
Snowy
Дата 13.4.2006, 15:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Вот здесь: http://forum.vingrad.ru/index.php?showtopic=80197 упаковка/распаковка файлов.
Там же вариант со скачиванием с интернета.
Вот функция скачивания файла по http ченез WinInet:
Код

procedure DLFile(DwFile, SvFile: string);
var
  hInternet: pointer;
  hFile: pointer;
  DataBuff: pointer;
  Size, Bytes: dword;
  hOut: dword;
begin
  try
    try
      hInternet := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
      hFile := InternetOpenUrl(hInternet, PChar(DwFile), nil, 0,
                               INTERNET_FLAG_EXISTING_CONNECT, 0);
      if hFile <> nil then
      begin
        InternetQueryDataAvailable(hFile, Size, 0, 0);
        GetMem(DataBuff, Size);
        try
          InternetReadFile(hFile, DataBuff, Size, Bytes);
          hOut := CreateFile(PChar(SvFile), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, $20, 0);
          if hOut <> INVALID_HANDLE_VALUE then
          begin
            WriteFile(hOut, DataBuff^, Size, Bytes, nil);
            CloseHandle(hOut);
          end
        finally
          FreeMem(DataBuff);
        end;
      end;
    except
      ShowMessage('Не могу подключиться к серверу');
    end;
  finally
    InternetCloseHandle(hFile);
  end;
  InternetCloseHandle(hInternet);
end;

PM MAIL   Вверх
welt
Дата 13.4.2006, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



Цитата

Вот функция скачивания файла по http ченез WinInet:

А эта процедура работает для любых файлов?
Snowy, можешь кинуть ссылку на тему как программно запаковывать/распаковывать файлы ?
PM MAIL   Вверх
Snowy
Дата 13.4.2006, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Цитата(welt @ 13.4.2006, 18:05 Найти цитируемый пост)
А эта процедура работает для любых файлов?
Абсолютно для любых.

Цитата(welt @ 13.4.2006, 18:05 Найти цитируемый пост)
Snowy, можешь кинуть ссылку на тему как программно запаковывать/распаковывать файлы ?
Ссылка в посте выше.
PM MAIL   Вверх
welt
Дата 14.4.2006, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.5.2005
Где: UnderGround

Репутация: нет
Всего: нет



Я думаю возможен такой вариант:
написать php-скрипт, который будет импортировать данные из экселевского файла в базу данных, а потом программа на делфи будет брать данные из этой бд и отображать их.
Вся суть в том, что у юзера должен быть доступ к файу .xls только через эту программу.
PM MAIL   Вверх
Magister Y0da
Дата 20.9.2009, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Зелёненький
*


Профиль
Группа: Участник
Сообщений: 235
Регистрация: 30.11.2004

Репутация: нет
Всего: 2



Цитата(Snowy @ 13.4.2006,  15:51)
Вот функция скачивания файла по http ченез WinInet:
Код

procedure DLFile(DwFile, SvFile: string);
var
  hInternet: pointer;
  hFile: pointer;
  DataBuff: pointer;
  Size, Bytes: dword;
  hOut: dword;
begin
  try
    try
      hInternet := InternetOpen(nil, INTERNET_OPEN_TYPE_PRECONFIG, nil, nil, 0);
      hFile := InternetOpenUrl(hInternet, PChar(DwFile), nil, 0,
                               INTERNET_FLAG_EXISTING_CONNECT, 0);
      if hFile <> nil then
      begin
        InternetQueryDataAvailable(hFile, Size, 0, 0);
        GetMem(DataBuff, Size);
        try
          InternetReadFile(hFile, DataBuff, Size, Bytes);
          hOut := CreateFile(PChar(SvFile), GENERIC_WRITE, 0, nil, CREATE_ALWAYS, $20, 0);
          if hOut <> INVALID_HANDLE_VALUE then
          begin
            WriteFile(hOut, DataBuff^, Size, Bytes, nil);
            CloseHandle(hOut);
          end
        finally
          FreeMem(DataBuff);
        end;
      end;
    except
      ShowMessage('Не могу подключиться к серверу');
    end;
  finally
    InternetCloseHandle(hFile);
  end;
  InternetCloseHandle(hInternet);
end;

попробовал эту процедуру - работает, но так сказать на половину - скачивается половина картинки
картинка берется с recaptcha.net
--------------------
PM MAIL ICQ   Вверх
BLACK_KOT
Дата 12.6.2011, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 20.12.2006

Репутация: -1
Всего: -1



первые 760 байт скачивает эта процедура и  обрывает. подскажите рабочую процедуру для скачки файла с инета


--------------------
                       .. я - демо версия Бога от Microsoft..
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.1148 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.