Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.10.2014, 09:28   #1
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
Вопрос Скачаивание файла с сервера на компьютер пользователя

Доброго времени суток!
Моя программа позволяет проверить версию и если появилась новая версия, предлагает скачать.
Программа скачивает на диск С:, но вот столкнулся с проблемой, а именно: у некоторых пользователей диск С: отсутствует и система стоит на другом диске.
Подскажите как реализовать так чтобы файл скачивался на системный диск, если можно то желательно на рабочий стол.
Вот мой код скачивая файла:
Код:
procedure TForm1.N6Click(Sender: TObject);
var
LoadStream : TMemoryStream;
begin
LoadStream := TMemoryStream.Create();
idHTTP1.Get('http://мой сайт/файл.zip', LoadStream);
LoadStream.SaveToFile('C:/архив.zip');
LoadStream.Free;
  Application.MessageBox('Файл скачан!'+#13#10+'Расположение на диске С:','Обновление скачано',MB_OK);
end;
SKS вне форума Ответить с цитированием
Старый 08.10.2014, 09:33   #2
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Код:
Uses ActiveX, ShlObj;
...
function GetDeskTopPath : string;
var
  SpecialDir: PItemIdList;
begin
    SetLength(result, MAX_PATH);
    SHGetSpecialFolderLocation(Form1.Handle, CSIDL_DESKTOP, SpecialDir);
    SHGetPathFromIDList(SpecialDir, PChar(Result));
    SetLength(result, lStrLen(PChar(Result)));
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage(GetDeskTopPath);
end;
indexx вне форума Ответить с цитированием
Старый 08.10.2014, 17:38   #3
FaTaL
Участник клуба
 
Аватар для FaTaL
 
Регистрация: 09.11.2007
Сообщений: 1,761
По умолчанию

Или так:
Код:
uses
  Windows, ShlObj;
...............................................
function GetUserDesktopDir : string;
var
  c   : array [0..MAX_PATH] of char;
  dir : string;
begin
  SHGetFolderPath(0, CSIDL_DESKTOPDIRECTORY, 0, 0, c);
  dir := c;
  result := dir + '\';
end;
FaTaL вне форума Ответить с цитированием
Старый 08.10.2014, 21:00   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

попробуй ещё поюзать переменную окружения. сам не пробовал, но интересно.
Код:
LoadStream.SaveToFile('%USERPROFILE%\Desktop\архив.zip');
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 09.10.2014, 04:21   #5
SKS
Форумчанин
 
Аватар для SKS
 
Регистрация: 05.01.2009
Сообщений: 242
По умолчанию

min@y™ пробовал ваш код в различных вариациях - не помогло =) путь неверный.
FaTaL с вашим кодом малость не понял.
indexx ваш пример наталкнул на верный путь, попробую реализовать.
Всем спасибо! Кину + на весы за идеи.
SKS вне форума Ответить с цитированием
Старый 09.10.2014, 08:20   #6
indexx
Заблокирован
 
Регистрация: 12.09.2014
Сообщений: 544
По умолчанию

Цитата:
indexx ваш пример наталкнул на верный путь, попробую реализовать.
Хм... А в таком виде, как я привёл, код не работает? Любопытно узнать какую строку отдаёт функция.
indexx вне форума Ответить с цитированием
Старый 11.10.2014, 07:34   #7
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

А переменная idHTTP1 какого типа?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 11.10.2014, 07:42   #8
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
А переменная idHTTP1 какого типа?
Вероятно, idHTTP1 : TidHTTP;
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 11.10.2014, 07:50   #9
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

А в каком модуле тип TidHTTP (или что писать после uses)?
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 11.10.2014, 08:00   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
А в каком модуле тип TidHTTP (или что писать после uses)?
Я, похоже, сёдня дежурный по поиску.
Изображения
Тип файла: png 2.png (14.9 Кб, 60 просмотров)
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
удаление файла c ftp сервера Lokos JavaScript, Ajax 8 01.07.2014 04:40
Скачивание файла на компьютер vn024 Паскаль, Turbo Pascal, PascalABC.NET 2 24.02.2013 19:01
Копирование файла и имя пользователя aank10 C++ Builder 1 02.05.2012 18:45
Загрузка файла с сервера (Synapse) Terikon Работа с сетью в Delphi 6 14.09.2011 03:32
копировать базу из сервера на другой компьютер Aqil_f БД в Delphi 10 10.07.2009 11:31