Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

DxPlay (пересылка файлов) [Delphi, Windows]


Mr.Kirya ©   (2002-09-12 21:58:00) 

Нужно переслать по сети фаил.Для пересылки используется компонент dxPlay.
Я пытаюсь реализовать это следующим образом:

const
DXFILE_MESSAGE=2;

type
TDXFileMessage = record
dwType: DWORD;
TextCode:TMemoryStream;
end;

procedure TMainForm.DXPlay1AddPlayer(Sender: TObject; Player: TDXPlayPlayer);
var
Msg2: ^TDXfileMESSAGE;
msgSize2: Integer;

begin

msgSize2:= SizeOf( TDXFileMESSAGE );
GetMem(Msg2, MsgSize2);

try
msg2.dwType := DXFile_MESSAGE;
msg2.TextCode.Create;
msg2.TextCode.LoadFromFile("images/user.bmp");
DXPlay1.SendMessage(DPID_ALLPLAYERS,msg2,msgsize2);

finally
FreeMem(Msg2);
msg2.TextCode.Free;
end;

end;

procedure TMainForm.DXPlay1Message(Sender: TObject; Player: TDXPlayPlayer; Data: Pointer;
DataSize: Integer);
begin
TDXFileMessage( Data^ ).textcode.SaveToFile("images/"+inttostr(Player.id)+".bmp");
end;



После запуска возникает ошибка - access violation at....
Вроде бы все логично...не могу понять в чем ошибка:(


Mr.Kirya   (2002-09-16 20:38:00) [1]

Да я видед, видел.Сам чат это совершенно элементарно, а
вот пересылка файлов...


Drunken Cat   (2002-09-16 00:00:00) [2]

Наворотил, поэтому и не получается ;) На DelphGFX кажись есть пример работы с DXPlay. Пример обмена тестовыми сообщениями (чат, короче) посмотри...


Mr.Kirya   (2002-09-15 12:08:00) [3]

Блин, всеровно нифига не получается...я уже такого наворотил..
Пробовал побайтно пересылать и всеровно не получается:((
Ну делается же это как-то через DxPlay!?А как тогда в игрушках в которых сетевая игра сделана именно черех dxplay карты пересылают???


Mr.Kirya   (2002-09-13 23:51:00) [4]

Thanks за совет проверю.


Drunken Cat   (2002-09-13 21:14:00) [5]

Мдя... Ты бы всетки решил чего ты хочешь пересылать, файл, или всего лишь адресс ;) Ведь TextCode у тебя всего-лишь указатель :) Ради развлечения, попробуй посмотреть чему у тебя равен SizeOf( TDXFileMESSAGE ) думается будет равен 8 байтам. Может, коль уж начал так делать, будешь пересылать тот кусок на который указывает пропертя Memory? :) Вощем намудрил ты тут весьма... аж не знаю как :)))


Mr.Kirya   (2002-09-13 17:44:00) [6]

Да как бы на самом деле я чат пишу с использованием dxPlay.Tам у каждого юзверя должна быть своя картинка.Ее надо пересылать ко всем пользователям...вот:)А раз под dxplay, так и файлы с его помощью надо..


pasha676   (2002-09-13 09:19:00) [7]

Я шизею, дорогая редакция. Нет не с самого текста, я в нем с утра не разберусь, а с подхода. Неужели чтобы переслать файл по сети нужно лезть в DirectX и DirectPlay? Как бы существуют API функции копирования файлов, через стримы можно, через сокеты в конце концов. А через ДиректХа - ну это редкостно оригинально конечно, но на фига?


Наверх

Титульная страница Поиск, карта сайта Написать письмо