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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2012, 19:37   #1
Кортана
Заблокирован
 
Регистрация: 11.12.2012
Сообщений: 22
По умолчанию Delphi бьет скачиваемые файлы.

Приветствую.
Проблема такова: есть вот такой код, загружающий с сервера самораспаковывающийся SFX-архив:
Код:
var
D : TMemoryStream;
begin
D := TMemoryStream.Create();
IdHTTP1.Get('http://адрес сервера', D);
D.SaveToFile('filename.exe');
D.Free; 
end;
Однако, когда я пытаюсь запустить скачанный файл, он запускаться отказывается, вылетает сообщение об ошибке и т.д. Хотя когда до того как я его загрузила на сервер (т.е. только создала) все было нормально.
Кортана вне форума Ответить с цитированием
Старый 28.12.2012, 21:21   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
var
D : TFileStream;
begin
D := TFileStream.Create('filename.exe',fmCreate);
IdHTTP1.Get('http://адрес сервера', D);
D.Free; 
end;
Подходит?
Цитата:
он запускаться отказывается
Не исключаешь возможность что он для твоей ОСи не подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.12.2012, 02:37   #3
Кортана
Заблокирован
 
Регистрация: 11.12.2012
Сообщений: 22
По умолчанию

Цитата:
Не исключаешь возможность что он для твоей ОСи не подходит?
Исключаю. Ибо:
Цитата:
Хотя когда до того как я его загрузила на сервер (т.е. только создала) все было нормально.
Кортана вне форума Ответить с цитированием
Старый 29.12.2012, 11:46   #4
superedward
Форумчанин
 
Аватар для superedward
 
Регистрация: 27.11.2012
Сообщений: 190
По умолчанию

Я файло скачиваю так:

Код:
function DownloadFile(const AppName,FileURL,FileName: string): cardinal;
var
  hSession,hFile: HInternet;
  Buffer: array[1..1024]of Byte;
  BufferLen,fSize: LongWord;
  f: File;
begin
 Result:=0;
 hSession:=InternetOpen(PChar(AppName),INTERNET_OPEN_TYPE_PRECONFIG,nil,nil,0);
 if Assigned(hSession)then begin
  hFile:=InternetOpenURL(hSession,PChar(FileURL),nil,0,INTERNET_FLAG_RELOAD,0);
  if Assigned(hFile)then begin
   AssignFile(f,FileName);
   Rewrite(f,1);
   fSize:=0;
   repeat
    InternetReadFile(hFile,@Buffer,SizeOf(Buffer),BufferLen);
    BlockWrite(f,Buffer,BufferLen);
    fSize:=fSize+BufferLen;
   until BufferLen=0;
   CloseFile(f);
   Result:=fSize;
   InternetCloseHandle(hFile);
  end;
  InternetCloseHandle(hSession);
 end;
end;
superedward вне форума Ответить с цитированием
Старый 29.12.2012, 20:08   #5
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Когда вы забудете file? - это паскалевский рудимент... в генофонде пользуют TFileStream и ты пользуй. тот же код только на стреме
http://www.programmersforum.ru/showp...97&postcount=8
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 29.12.2012, 22:01   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Исключаю.
Мой пример не помог?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.12.2012, 03:57   #7
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Код:
var
D : TMemoryStream;
begin
D := TMemoryStream.Create;
IdHTTP1.Get('http://вашсайт/filename.exe', D); <=== полный путь до файла
D.SaveToFile('filename.exe');
D.Free; 
end;
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Старый 30.12.2012, 11:49   #8
Кортана
Заблокирован
 
Регистрация: 11.12.2012
Сообщений: 22
По умолчанию

Цитата:
Мой пример не помог?
Не помог.
Код:
var
D : TMemoryStream;
begin
D := TMemoryStream.Create;
IdHTTP1.Get('http://вашсайт/filename.exe', D); <=== полный путь до файла
D.SaveToFile('filename.exe');
D.Free; 
end;
М-м-м, вообще-то я так и делаю))))
Кортана вне форума Ответить с цитированием
Старый 30.12.2012, 11:52   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
<=== полный путь до файла
Это с какого перепугу?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.12.2012, 12:19   #10
Alex2009
Proger Man
Форумчанин
 
Аватар для Alex2009
 
Регистрация: 07.03.2009
Сообщений: 584
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Это с какого перепугу?
Вы хотите сказать что я не прав? Хмм...да возможно репутация у нас с вами отличается, возможно вы больше меня разбираетесь в делфи. Но вы бы во первых не флудили, во вторых я нечего не вижу такого что вас так взволновало в моем ответе!

Цитата:
М-м-м, вообще-то я так и делаю))))
Можно узнать адрес по которому вы пытаетесь скачать файл? Возможно если это сервер то лучше использовать idFTP.
ShowMessage('Добро пожаловать!');
Alex2009 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очень нужно сделать задачу в Delphi(Типизированные файлы. файлы записи) Vitalik1 Помощь студентам 1 16.12.2011 10:38
Записи - "бьет" ли карта k1 карту k2, с учетом того что масть m является козырной. makarevich Общие вопросы Delphi 2 21.06.2011 13:38
"бьет" ли карта С1 карту С2 Djoker Паскаль, Turbo Pascal, PascalABC.NET 1 13.12.2010 19:54
Записи. Бьет ли карта k1 карту k2 StudeHt Помощь студентам 4 29.04.2009 21:21
Записи. Бьет ли карта k1 карту k2 Иван 883 Помощь студентам 7 06.04.2009 14:08