Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
ВнизВопрос про передачу UDP инди 10. Найти похожие ветки
← →
vegarulez © (2008-03-19 19:35) [0]Привет всем мастерам!
Вопрос такого характера. Раньше использовал инди 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?
← →
Сергей М. © (2008-03-19 19:40) [1]
> Не знаю что такое TBytes
</>
Возьми да узнай.
Исходники-то открыты, да и прямо перед носом они)
← →
vegarulez © (2008-03-19 19:43) [2]TBytes нет в хелпе... (
Деж тада смотреть ? подскажи...
← →
Сергей М. © (2008-03-19 19:46) [3]
> Деж тада смотреть ? подскажи
В исходных текстах, сказано же ..
← →
vegarulez © (2008-03-20 06:07) [4]В исходных текстах чего? Я же привёл исходный текст, который на 8-ом инди успешно работает, там ни слова о Tbytes... не пойму тя...
← →
Сергей М. © (2008-03-20 08:25) [5]
> В исходных текстах чего?
Инди 10-й версии, чего же еще ?
Сам же сказал - "поставил инди 10"
← →
Сергей М. © (2008-03-20 08:45) [6]У меня 10-ка не установлена, но полагаю, что
TBytes = array of Byte
← →
vegarulez © (2008-03-20 11:25) [7]у меня 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.
← →
vegarulez © (2008-03-21 07:27) [8]Сечас вообще просто начал с нуля. Кинул на форму тока один 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-21 07:29) [9]*в блоке type
← →
Сергей М. © (2008-03-21 08:17) [10]
> vegarulez
Ну ты исходники-то индейские обшарил или нет ?
Хочешь сказать, что тип TBytes не объявлен ни в одном из евойных юнитов ?
Глубоко в этом сомневаюсь)
Тогда пробуй объявить сам
type
TBytes = array of Byte;
← →
korneley © (2008-03-21 08:36) [11]юнит -
IdGlobal
, а тип, как и говорил Сергей М.TBytes = array of Byte;
← →
vegarulez © (2008-03-21 09:24) [12]Сергей М. © (20.03.08 08:45) [6], korneley © (21.03.08 08:36) [11]
Полностью с вами согласен. У меня просто почему-то Idglobal не добавлялся сам автоматом в Юзес...
Сечас полазил на сайтах индейцев. Скачал пару примерчиков на 10-ых индюках. Вопрос решился. Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.04.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.007 c