Модераторы: Snowy, Poseidon, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Thread, TIdPeerThread, Передача параметра 
:(
    Опции темы
GuManOiD
  Дата 6.6.2006, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



Я вызываю поток след. образом:
Код

Thr := TDownUpLoadFile.Create(False);
Thr.FileName := STRBuf;
Thr.AThread := AThread;
Thr.FreeOnTerminate := True;


Его код:
Код

procedure TDownUpLoadFile.Execute;
begin
  SetName;
  { Place thread code here }
  Synchronize(DownloadFile);
end;

procedure TDownUpLoadFile.DownloadFile;
begin
sDownloadFile(Filename,Athread);
end;


Переменные FileName, Athread обьявлены в паблике, процедура sDownloadFile просто скачивает файл из Athread.
Отдельно от потока работает идеально, а вот вместе с ним вылетает с Access Vialation. Может быть есть другой способ передачи параметров потоку? Обработчик помещен в TIdTCPServer.onExecute. 
PM MAIL   Вверх
Snowy
Дата 6.6.2006, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



что-то ты не в ту сторону копаешь.
так у тебя полная ерунда получится.
Access Vialation это еще самый лучший результат.
худший - потеря указателей и бесконечная рекурсия.
Так делать просто нельзя.
Тут даже не детали, а вся схема продумана неправильно. 
PM MAIL   Вверх
GuManOiD
Дата 6.6.2006, 21:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 79
Регистрация: 12.9.2005

Репутация: нет
Всего: нет



Ну тогда так, задача, принимать файлы от клиентов так что бы загрузка самого файла производилась в потоке, плиз- обьясните, а то я потоки тока недавно начал ковырять smile

Добавлено @ 21:24 
Так народ, все вопрос отпал, писать почему я так тупил не буду, долго smile smile 
PM MAIL   Вверх
Snowy
Дата 6.6.2006, 21:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 53
Всего: 484



Ну так это же сервер. У тебя на каждое соединение и так создан отдельный тред.
Твоя задача всего лишь забрать текущую порцию данных в OnExecute.
Определись с методом забора и всё.
Т.к. файл, рекомендую ReadStream с параметрами по умолчанию.
Пусть стрим наполняется, пока файл не будет принят,а потом просто скинь его на диск.

Добавлено @ 21:41 
А, ну да. Забыл одну деталь.
Где разместить стрим.
У треда есть пропертя Data: TObject.
Создай стрим и присвой его Data. 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Сети"
Snowy
Poseidon
MetalFan

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делится вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Сети | Следующая тема »


 




[ Время генерации скрипта: 0.0436 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.