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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.12.2013, 19:49   #1
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
Восклицание Запись в файл TFileStream

Всем привет!
Подскажите, как писать из файлового потока в файл частями, например по 1мб?
Скачиваю из Инета файл, размером 100мб, размер буффера: Buffer: Array [0..4096] of Byte;
Собственно пока не выкачаю 100мб, файл имеет нулевой размер.
ДралсяСошибками вне форума Ответить с цитированием
Старый 01.12.2013, 20:00   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А это смотря как качаешь. Код в студию короче.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 20:04   #3
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Код:
FileStream := TFileStream.Create('ôàéë', fmCreate, fmOpenWrite);
                       repeat
                         i := Recv(WSocket, Buffer, SizeOf(Buffer), 0);
                         FileStream.Write(Buffer, SizeOf(Buffer));
                       until i = 0;
                     FileStream.Free;
ДралсяСошибками вне форума Ответить с цитированием
Старый 01.12.2013, 20:19   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ты и так пишешь по частям. Но пока FileStream не будет освобожден в файл ничего не запишется. И по-моему у него нет метода принудительного сброса на диск.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 20:23   #5
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Жаль конечно что нету.
Спасибо))))
ДралсяСошибками вне форума Ответить с цитированием
Старый 01.12.2013, 20:27   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Цитата:
Сообщение от ДралсяСошибками Посмотреть сообщение
Код:
FileStream := TFileStream.Create('ôàéë', fmCreate, fmOpenWrite);
                       repeat
                         i := Recv(WSocket, Buffer, SizeOf(Buffer), 0);
                         FileStream.Write(Buffer, SizeOf(Buffer));
                       until i = 0;
                     FileStream.Free;
и это не правильно.
правильно проверять i

Код:
 i := Recv(WSocket, Buffer, SizeOf(Buffer), 0);
if i<=0 then raise Exception
FileStream.Write(Buffer, i);
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 01.12.2013, 20:41   #7
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Спасибо.
Это был предварительный набросок, конечно же нужно всё проверять.

Вопросец: почему я никому не могу добавить плюсег?
ошибка: "Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его"

Последний раз редактировалось ДралсяСошибками; 01.12.2013 в 20:43. Причина: осенило
ДралсяСошибками вне форума Ответить с цитированием
Старый 01.12.2013, 21:39   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Жаль конечно что нету.
Используй другие функи. Из WinAPI к примеру.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.12.2013, 21:46   #9
ДралсяСошибками
Форумчанин
 
Аватар для ДралсяСошибками
 
Регистрация: 31.05.2011
Сообщений: 301
По умолчанию

Я чот подумал, в принципе и пусть он пишет при завершении, если связь рванёт, то запишет сколько скачал и при востановлении связи могу дальше докачать
ДралсяСошибками вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запись компонента через TFileStream и считывание. Alexandr17-10 Общие вопросы Delphi 1 22.08.2013 16:20
Запись JPEG-ов в TFileStream DelhiProgramer Общие вопросы Delphi 3 12.12.2012 18:42
Запись массива строк в TFileStream DelhiProgramer Общие вопросы Delphi 1 19.11.2012 20:40
Запись трёхмерного динамического массива в TFileStream Sёker Общие вопросы Delphi 3 21.04.2012 12:46
Сохранить файл TFileStream s500 Общие вопросы Delphi 7 15.04.2012 19:51