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

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

Вопрос про передачу UDP инди 10. [D7, XP]


vegarulez ©   (2008-03-19 19:35:00) 

Привет всем мастерам!
Вопрос такого характера. Раньше использовал инди 8 и там передавал ответ сообщение UDP сервера на UDP клиент вот таким образом:


procedure TfrmPing.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
 ABinding: TIdSocketHandle);
var
 DataStringStream: TStringStream;
 s:string;
begin
 DataStringStream := TStringStream.Create('');
 try
  DataStringStream.CopyFrom(AData, AData.Size);
  Label2.Caption:=DataStringStream.DataString;
  s :='тест' + Label2.Caption;
  ABinding.SendTo(ABinding.PeerIP, ABinding.PeerPort, s[1], Length(s));
 except on E:Exception do Exit ;
 end;
end;


Сечас поставил инди 10 и при компиляции выдаёт ошибку. Т.к. в 10-ом инди формат параметров sendto стал другим (наводя мышкой показывает, что параметры передаваемые в процедуру должны быть такими):

procedure SendTo(const AIP: string; const APort: Integer; const ABuffer: TBytes; const AIPVersion: TIdIpVersion= Id_IPv4);

Подскажите как быть с передачей буфера - ABuffer.
Не знаю что такое TBytes?  
И как, s -  стринговую, преобразовать TBytes?


vegarulez   (2008-03-21 09:24:00) [1]

Сергей М. ©   (20.03.08 08:45) [6], korneley ©   (21.03.08 08:36) [11]
Полностью с вами согласен. У меня просто почему-то Idglobal не добавлялся сам автоматом в Юзес...

Сечас полазил на сайтах индейцев. Скачал пару примерчиков на 10-ых индюках. Вопрос решился. Спасибо.


korneley   (2008-03-21 08:36:00) [2]

юнит - IdGlobal, а тип, как и говорил Сергей М. TBytes = array of Byte;


Сергей М.   (2008-03-21 08:17:00) [3]


> vegarulez


Ну ты исходники-то индейские обшарил или нет ?
Хочешь сказать, что тип TBytes не объявлен ни в одном из евойных юнитов ?

Глубоко в этом сомневаюсь)

Тогда пробуй объявить сам

type

TBytes = array of Byte;


vegarulez   (2008-03-21 07:29:00) [4]

*в блоке type


vegarulez   (2008-03-21 07:27:00) [5]

Сечас вообще просто начал с нуля. Кинул на форму тока один UDPServer
и нажал на OnUDPRead - создал процедуру пустую:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, IdBaseComponent, IdComponent, IdUDPBase, IdUDPServer;

type
 TForm1 = class(TForm)
   IdUDPServer1: TIdUDPServer;
   procedure IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
     ABinding: TIdSocketHandle);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TBytes;
 ABinding: TIdSocketHandle);
begin
;
end;

end.


И при компиляции пишет: дескать не знаю, что такое TBytes - в самом описании процедуры - в блоке types.

Подскажите как быть?..


vegarulez   (2008-03-20 11:25:00) [6]

у меня D7 там хелп от девятых индейцев... там не то...
при нажатии контролом на sendto в IdSocketHandlе вот такой код отправки

procedure TIdSocketHandle.SendTo(const AIP: string; const APort: Integer; const ABuffer : TIdBytes; const AIPVersion: TIdIPVersion = ID_DEFAULT_IP_VERSION);
begin
 GStack.SendTo(Handle, ABuffer, 0, AIP, APort,AIPVersion);
end;

попробую с Array of Byte.


Сергей М.   (2008-03-20 08:45:00) [7]

У меня 10-ка не установлена, но полагаю, что
TBytes = array of Byte


Сергей М.   (2008-03-20 08:25:00) [8]


> В исходных текстах чего?


Инди 10-й версии, чего же еще ?

Сам же сказал - "поставил инди 10"


vegarulez   (2008-03-20 06:07:00) [9]

В исходных текстах чего? Я же привёл исходный текст, который на 8-ом инди успешно работает, там ни слова о Tbytes... не пойму тя...


Сергей М.   (2008-03-19 19:46:00) [10]


> Деж тада смотреть ? подскажи


В исходных текстах, сказано же ..


vegarulez   (2008-03-19 19:43:00) [11]

TBytes нет в хелпе... (
Деж тада смотреть ? подскажи...


Сергей М.   (2008-03-19 19:40:00) [12]


> Не знаю что такое TBytes
</>

Возьми да узнай.
Исходники-то открыты, да и прямо перед носом они)


Наверх

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