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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2010, 14:21   #1
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
Смех WinInet загрузить файл во временной файл , использовать, потом удалить

Привет всем!

Интересует следующий вопрос!
Как загрузить файл , как временной(чтоб во временной папке был) или типа *.tmp что-ли=)

Потом использовать его.
По завершению программы удалить?

Вот написал функцию загрузки...
Код:
function ThttpThread.HTTPGetFile(const FileURL,FileSaveDest:string;ShowProgress:Boolean):Boolean;
const
  BufferSize=1024;  //Буфер данных
var
  hSession,hURL:HInternet;
  Buffer: array[1..BufferSize] of Byte;
  BufferLen:LongWord;
  F:file;
  pAppName:string;
begin
  Result:=False;
  pAppName:='ArhangeLFilesUpdater';
  hSession:=InternetOpen(PChar(pAppName),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
  try
  hURL:=InternetOpenUrl(hSession,PChar(FileURL),nil,0,0,0);
  if (hURL<>nil) then
  begin
  try
  DeleteUrlCacheEntry(PChar(FileURL));
  AssignFile(F,FileSaveDest);
  Rewrite(F,1);
  repeat
    InternetReadFile(hURL,@Buffer, SizeOf(Buffer),BufferLen);
    BlockWrite(F,Buffer,BufferLen);
    if (ShowProgress) then
    begin
    LT:=LT+BufferLen;
    SendMessage(MainForm.Handle,PROGRESS,0,LT+BufferLen);
    end;
    until
    BufferLen= 0;
    CloseFile(F);
    Result:=True;
    finally
      InternetCloseHandle(hURL);
      end;
      end;
     finally
     InternetCloseHandle(hSession);
  end;
  LT:=0;
  SendMessage(MainForm.Handle,PROGRESS,0,0);
end;
Как не сохранять файл где-нибуть а на время работы программы зделать его временным?
После завершения exe удалить файл?

Какой флаг использовать?

или может как получить временную папку?
Человек_Борща вне форума Ответить с цитированием
Старый 31.07.2010, 14:40   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Народ , подскажет кто-нибуть?
Человек_Борща вне форума Ответить с цитированием
Старый 31.07.2010, 15:53   #3
ZaRDaK
Форумчанин
 
Регистрация: 01.09.2009
Сообщений: 197
По умолчанию

вроде бы за папку темп отвечает одноименная системная переменная %TEMP%
Юзать так:
Код:
function GetTempFolder: string;
var buf: PChar;
begin
buf:= StrAlloc(MAX_PATH);
if GetEnvironmentVariable('Temp', buf, MAX_PATH)<> 0 then
Result:= buf else
Result:= 'N/A';
StrDispose(buf);
end;
ZaRDaK вне форума Ответить с цитированием
Старый 31.07.2010, 22:14   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

GetTempPath
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 01.08.2010, 20:34   #5
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

См. также.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 03.08.2010, 13:46   #6
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Спасибо что ответили:
вот ещё вариант:
Код:
function GetTempDir : String;
var
 Buffer: array[0..1023] of Char;
begin
 SetString(Result, Buffer, GetTempPath(Sizeof(Buffer) - 1, Buffer));
end;
Человек_Борща вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить файл utf8! SkAndrew Общие вопросы Delphi 4 22.04.2010 17:43
Как записать структуру в файл? и прочитать потом. katushka-1990 Общие вопросы C/C++ 2 23.03.2010 10:07
Как загрузить файл? Suren Общие вопросы C/C++ 1 06.03.2010 21:47
Помогите с ifstream. Можно ли сначала объявить, а потом указать файл? TwiX Общие вопросы C/C++ 6 25.09.2009 22:54
Загрузить png файл MAcK Мультимедиа в Delphi 1 22.12.2008 22:23