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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2012, 23:26   #1
hysek
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 32
По умолчанию IdTCPClient+FileListBox

Подскажите пожалуйста,как вытянуть файл из компонента FileListBox и передать серверу по сети через IdTCPClient
hysek вне форума Ответить с цитированием
Старый 08.05.2012, 23:49   #2
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Открыть фаил как файловый поток и передать его сокету.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2012, 00:15   #3
hysek
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 32
По умолчанию

а что пишется и куда в сервере,что бы принять файл от клиента?
понимаю что надо ReadStream,но куда и как правильно записать??

Последний раз редактировалось hysek; 09.05.2012 в 00:36.
hysek вне форума Ответить с цитированием
Старый 09.05.2012, 00:50   #4
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Нужно создать (Buf например) переменую TFileStream с привязкой к файлу, куда будут сливаться байты от клиента. Затем нужно принять от клиента размер этого файла (Size например), чтоб правильно считать. А потом IOHandler.ReadStream(Buf, Size). Убиваем Buf и мы имеем принятый фаил.

Какая версия Инди и Делфи?
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2012, 00:59   #5
hysek
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 32
По умолчанию

примерно я так и понял пошарившись по форуму,но к себе подстроить не могу(
делфи 7, indy - 9
hysek вне форума Ответить с цитированием
Старый 09.05.2012, 01:12   #6
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

И что получалось в итоге? Покажи код клиента и сервера на отправку.
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2012, 01:23   #7
hysek
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 32
По умолчанию

клиент отправляет
Код:
var
 f:Boolean;
  Potok:TMemoryStream;
  FileName:string;
procedure TForm5.btn5Click(Sender: TObject);
begin
if IdTCPClient1.Connected=true then
begin
try
 Potok.LoadFromFile(FileName);
 IdTCPClient1.WriteInteger(Potok.Size,true);
 IdTCPClient1.WriteStream(potok,true,false,potok.Size);
 Potok.Clear;
 ShowMessage('Отправлено');
finally
f:=true;
end;
end;
end;

procedure TForm5.FormCreate(Sender: TObject);
begin
potok:=TMemoryStream.Create;
FileName:=fllst1.FileName;
end;
сервер принимает

Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
FileName:=fllst1.FileName;
 Potok:=TMemoryStream.Create;
end;

procedure TForm1.IdTCPServer1Connect(AThread: TIdPeerThread);
 begin
  size:= AThread.Connection.ReadInteger(true);
  AThread.Connection.ReadStream(potok,size,false);
  potok.SaveToFile(FileName);
  Potok.Clear;
  ShowMessage('Принято');
end;
hysek вне форума Ответить с цитированием
Старый 09.05.2012, 01:28   #8
hysek
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 32
По умолчанию

выводит ошибку
Cannot open file "". Системе не удается найти указанный путь.
hysek вне форума Ответить с цитированием
Старый 09.05.2012, 01:38   #9
Valio
Сливочное масло
Участник клуба
 
Аватар для Valio
 
Регистрация: 01.01.2011
Сообщений: 1,149
По умолчанию

Цитата:
Сообщение от hysek Посмотреть сообщение
выводит ошибку
Cannot open file "". Системе не удается найти указанный путь.
Хм... а может действительно путь к файлу битый? не видно где он задаётся...
Сливочное масло Valio - компиляция как по маслу
Valio вне форума Ответить с цитированием
Старый 09.05.2012, 02:00   #10
hysek
Пользователь
 
Регистрация: 02.05.2012
Сообщений: 32
По умолчанию

а если так
Код:
procedure TForm5.btn5Click(Sender: TObject);
var fs:TFileStream;
begin
 fs:=TFileStream.Create(fllst1.FileName,fmOpenWrite);
  IdTCPClient1.WriteStream(fs);
 fs.Free;
end;
то что написать на сервере для получения?
hysek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
filelistbox heroii2009 C++ Builder 0 13.03.2012 21:17
FileListBox и БД mojohead Помощь студентам 5 09.06.2011 00:26
FileListBox mojohead Помощь студентам 3 07.06.2011 18:09
FileListBox daget Компоненты Delphi 2 02.10.2009 06:14
Filelistbox Волк Общие вопросы Delphi 7 07.08.2009 01:22